Sznurek.strip () w Pythonie
Podczas nauki o Pythonie natknąłem się na ten kod, który pobiera plik tekstowy, dzieli każdą linię na tablicę i wstawia ją do niestandardowego słownika, gdzie tablica[0] jest kluczem, a tablica [1] jest wartością:
my_dict = {}
infile = open("file.txt")
for line in infile:
#line = line.strip()
#parts = [p.strip() for p in line.split("\t")]
parts = [p for p in line.split("\t")]
my_dict[parts[0]] = parts[1]
print line
for key in my_dict:
print "key: " + key + "\t" + "value " + my_dict[key]
Uruchomiłem program z wyłączonymi i włączonymi komentarzami i uzyskałem ten sam wynik. (oczywiście zastąpienie drugiej komentowanej linii linią pod nią). wydaje mi się, że robienie strip() jest opcjonalne. Czy lepiej poćwiczyć, żeby to zostawić?
5 answers
Jeśli możesz skomentować kod, a twój program nadal działa, to tak, ten kod był opcjonalny.
.strip()
bez argumentów (lub None
jako pierwszy argument) usuwa wszystkie białe znaki na początku i końcu, w tym spacje, tabulatory, nowe linie i powroty karetki. Pozostawienie go w pliku nie wyrządza żadnej szkody i pozwala programowi radzić sobie z nieoczekiwanymi dodatkowymi białymi spacjami wstawionymi do pliku.
Na przykład, używając .strip()
, następujące dwie linie w pliku prowadzą do tego samego wynik końcowy:
foo\tbar \n
foo\tbar\n
/ Align = "left" /Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-27 13:54:11
W tym przypadku, możesz mieć pewne różnice. Rozważ wiersz w stylu:
"foo\tbar "
W tym przypadku, jeśli strip
, otrzymasz {"foo":"bar"}
jako wpis słownika. Jeśli nie rozbierzesz się, otrzymasz {"foo":"bar "}
(zwróć uwagę na dodatkowe miejsce na końcu)
Zauważ, że jeśli użyjesz line.split()
zamiast line.split('\t')
, podzielisz się na każdy znak spacji, a "strip
ing " zostanie wykonane automatycznie podczas dzielenia. Innymi słowy:
line.strip().split()
Jest zawsze identyczne do:
line.split()
Ale:
line.strip().split(delimiter)
Niekoniecznie jest równoważne:
line.split(delimiter)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:40:44
strip
usuwa białe znaki w ciągu znaków. Jeśli chcesz usunąć dodatkowe białe znaki z przodu iz tyłu Sznurka, możesz użyć paska.
Przykładowy ciąg znaków, który może to zilustrować jest następujący:
In [2]: x = "something \t like \t this"
In [4]: x.split('\t')
Out[4]: ['something ', ' like ', ' this']
Widzisz, nawet po podzieleniu z {[2] } w pierwszym i drugim elemencie są dodatkowe białe spacje, które można usunąć za pomocą strip w kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:43:05
strip
usuwa białe znaki z początku i końca łańcucha. Jeśli chcesz białą spację, nie dzwoń do paska.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:40:46
Nie, lepiej jest je pomijać.
Bez strip (), możesz mieć puste klucze i wartości:
apples<tab>round, fruity things
oranges<tab>round, fruity things
bananas<tab>
Bez strip(), bananas jest obecny w słowniku, ale z pustym łańcuchem jako wartością. Za pomocą strip (), kod ten rzuci wyjątek, ponieważ usunie kartę linii bananowej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:41:17