2011-10-25 12 views
55

próbuje dowiedzieć się, jak napisać cykl if, aby sprawdzić, czy linia jest pusta.python: jak sprawdzić, czy linia jest pustą linią

Plik ma wiele strun, a jednym z nich jest pusta linia oddzielić od pozostałych sprawozdań (nie „”; to znak powrotu karetki następnie innej karetki myślę)

new statement 
asdasdasd 
asdasdasdasd 

new statement 
asdasdasdasd 
asdasdasdasd 

Rejestracja Używam moduł wprowadzania plików, czy istnieje sposób, aby sprawdzić, czy linia jest pusta?

Korzystanie z tego kodu wydaje się działać, dziękuję wszystkim!

for line in x: 

    if line == '\n': 
     print "found an end of line" 

x.close() 

Odpowiedz

77

Jeśli chcesz zignorować linie z tylko białe znaki:

if not line.strip(): 
    ... do something 

Pusty łańcuch jest wartością False.

A jeśli naprawdę chcesz tylko puste linie:

if line in ['\n', '\r\n']: 
    ... do something 
+0

drugi robi to, co miałem na myśli, dzięki! jeśli linia w ['\ n']: – user1006198

+1

Jeśli używasz tylko 'if linii w ['\ n']', powinieneś zamienić ją na 'if line == '\ n''. –

+1

Chciałbym zaznaczyć, że zaakceptowana odpowiedź zawiera błąd: if line.strip(): ... #do coś ignoruje linie z białymi spacjami, np. Spacja, tabulator i pusta linia. Dlatego tylko drugi pracował dla oryginalnego plakatu: "nie" musi zostać usunięte. – niefpaarschoenen

9
line.strip() == '' 

Lub, jeśli nie chce "jeść" linie składające się z pomieszczeń:

line in ('\n', '\r\n') 
+1

W drugiej próbce prawdopodobnie chciałbyś również sprawdzić, czy '\ r \ n' uwzględnia zakończenia linii w stylu systemu Windows (CRLF) – poplitea

+0

zapomniałem wspomnieć, że działa na komputerze Unix, więc używa znaku nowej linii bez \ r. Próbowałeś, ale to nie zadziałało, co działa dla mnie: jeśli linia w ['\ n']: (nie ma pojęcia, dlaczego linia == "\ n" nie zadziała) – user1006198

+1

@ user1006198: if you ' re tylko sprawdza dla '\ n', a następnie' linia == '\ n'' jest lepsza. Powinieneś prawdopodobnie spróbować jeszcze raz i dowiedzieć się, jaki był twój problem. – retracile

12

Poniższy kod służy do testowania pustej linii z białymi spacjami lub bez nich.

if len(line.strip()) == 0 : 
    # do something with empty line 
1

moim zdaniem jest bardziej wydajny w użyciu wyrażeń regularnych:

import re 

for i, line in enumerate(content): 
    print line if not (re.match('\r?\n', line)) else pass 

To będzie pasować w systemie Windows/UNIX. Ponadto, jeśli nie masz pewności co do linii zawierających tylko znak spacji, możesz użyć '\s*\r?\n' jako wyrażenia

Powiązane problemy