Próbuję wymyślić, jak napisać cykl if, aby sprawdzić, czy linia jest pusta.
Plik ma wiele ciągów, a jeden z nich jest pustą linią do oddzielenia od innych instrukcji (nie jest ""
; to powrót karetki, po którym następuje inny znak powrotu karetki, jak sądzę)
new statement
asdasdasd
asdasdasdasd
new statement
asdasdasdasd
asdasdasdasd
Ponieważ używam modułu wejściowego pliku, czy istnieje sposób sprawdzenia, czy wiersz jest pusty?
Używanie tego kodu wydaje się działać, dziękuję wszystkim!
for line in x:
if line == '\n':
print "found an end of line"
x.close()
if line in ['\n']
, powinieneś zamienić to naif line == '\n'
.os.linesep
zamiast['\n', '\r\n']
?Używam następującego kodu, aby przetestować pusty wiersz ze spacjami lub bez nich.
if len(line.strip()) == 0 : # do something with empty line
źródło
line.strip() == ''
Lub, jeśli nie chcesz „zjadać” wierszy składających się ze spacji:
line in ('\n', '\r\n')
źródło
\r\n
aby uwzględnić zakończenia linii w stylu Windows (CRLF)\n
, toline == '\n'
jest lepiej. Prawdopodobnie powinieneś spróbować ponownie i dowiedzieć się, na czym polegał problem.\r\n
jeśli nie używaszmode='rU'
(2) Uzyskaj wskazówkę:print repr(line)
a jeśli to nie daje wskazówki, powiedz nam dokładnie, co "nie działa" znaczy dla ciebie.Powinieneś otwierać pliki tekstowe za pomocą,
rU
aby znaki nowego wiersza były poprawnie przekształcane, zobacz http://docs.python.org/library/functions.html#open . W ten sposób nie ma potrzeby sprawdzania\r\n
.źródło
U
argument nie jest obsługiwany w python3.Myślę, że bardziej niezawodne jest użycie wyrażeń regularnych:
import re for i, line in enumerate(content): print line if not (re.match('\r?\n', line)) else pass
To pasowałoby w Windows / unix. Ponadto, jeśli nie jesteś pewien co do wierszy zawierających tylko znaki spacji, możesz użyć ich
'\s*\r?\n'
jako wyrażeniaźródło