2011-10-25 38 views
55

cố gắng tìm ra cách viết một chu trình nếu kiểm tra xem một dòng có trống không.python: cách kiểm tra xem một dòng có phải là một dòng trống không

Các tập tin có nhiều chuỗi, và một trong số đó là một dòng trống để tách rời khỏi những điều khoản khác (không phải là một ""; là một vận chuyển trở lại tiếp theo là một vận chuyển trở lại tôi nghĩ rằng)

new statement 
asdasdasd 
asdasdasdasd 

new statement 
asdasdasdasd 
asdasdasdasd 

Kể từ tôi đang sử dụng mô-đun đầu vào tệp, có cách nào để kiểm tra xem một dòng có trống không?

Sử dụng mã này có vẻ như hoạt động, cảm ơn tất cả mọi người!

for line in x: 

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

x.close() 

Trả lời

77

Nếu bạn muốn bỏ qua dòng với chỉ khoảng trắng:

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

Chuỗi trống là giá trị False.

Hoặc nếu bạn thực sự muốn dòng chỉ có sản phẩm nào:

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

thứ hai làm những gì tôi có trong tâm trí, Cảm ơn! nếu dòng trong ['\ n']: – user1006198

+1

Nếu bạn chỉ sử dụng 'if line in ['\ n']', bạn nên thay thế bằng 'if line == '\ n''. –

+1

Tôi muốn chỉ ra rằng câu trả lời được chấp nhận, có lỗi: nếu line.strip(): ... #do một cái gì đó bỏ qua các dòng có khoảng trống, nghĩa là không gian, tab và dòng trống. Đó là lý do tại sao chỉ có người thứ hai làm việc cho poster gốc: 'không' phải được loại bỏ. – niefpaarschoenen

9
line.strip() == '' 

Hoặc, nếu bạn không muốn "ăn lên" dây chuyền bao gồm các không gian:

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

Trong mẫu thứ hai, bạn có thể muốn kiểm tra '\ r \ n' để tính toán kết thúc dòng kiểu Windows (CRLF) – poplitea

+0

quên đề cập rằng điều này đang chạy trên một máy Unix, vì vậy nó sử dụng dòng mới mà không có \ r. Đã thử nó nhưng nó không hoạt động, những gì đang làm việc cho tôi: nếu dòng trong ['\ n']: (không có đầu mối tại sao dòng == "\ n" sẽ không hoạt động) – user1006198

+1

@ user1006198: if you ' chỉ kiểm tra '\ n', sau đó' line == '\ n'' là tốt hơn. Có lẽ bạn nên thử lại và tìm hiểu xem vấn đề của bạn là gì. – retracile

1

Bạn nên mở tập tin văn bản sử dụng rU nên dòng mới được chuyển đúng cách, xem http://docs.python.org/library/functions.html#open. Bằng cách này, bạn không cần phải kiểm tra \r\n.

+0

đã cố gắng mở nhưng tôi tìm thấy đầu vào tập tin phù hợp hơn cho trường hợp của tôi – user1006198

12

Tôi sử dụng mã sau để kiểm tra dòng trống có hoặc không có khoảng trắng.

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

tôi nghĩ là mạnh mẽ hơn để sử dụng biểu thức thông thường:

import re 

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

này sẽ phù hợp trong Windows/Unix. Ngoài ra, nếu bạn không chắc chắn về các dòng chỉ chứa khoảng trắng, bạn có thể sử dụng '\s*\r?\n' làm biểu thức

Các vấn đề liên quan