2010-07-27 60 views
15

Tôi đang đọc một số dữ liệu từ phương thức giao tiếp của mô đun phụ. Nó xuất hiện dưới dạng một chuỗi lớn được phân tách bởi "\ r \ n" s. Tôi muốn chia nó thành một danh sách các dòng. Điều này được thực hiện như thế nào trong python?Tách chuỗi được phân tách bằng " r n" thành danh sách các dòng?

+1

Khi bạn đọc trên 'string.split()' bạn tìm thấy gì? Bạn đã thử cái gì? Bạn đang sử dụng hướng dẫn nào? –

Trả lời

33

Sử dụng phương pháp tách dòng trên chuỗi.

Từ các tài liệu:

str.splitlines ([keepends]) Return một danh sách các dòng trong chuỗi, phá vỡ tại chỉ giới đường. Ngắt dòng không được bao gồm trong danh sách kết quả trừ khi giữ lại là cho trước và đúng sự thật.

Điều này sẽ làm điều đúng nếu kết thúc dòng là "\ r \ n", "\ r" hoặc "\ n" bất kể hệ điều hành.

NB dòng kết thúc bằng "\ n \ r" cũng sẽ chia, nhưng bạn sẽ nhận được một chuỗi trống giữa mỗi dòng vì nó sẽ coi "\ n" là dòng hợp lệ kết thúc và "\ r" làm kết thúc của dòng tiếp theo. ví dụ.

>>> "foo\n\rbar".splitlines() 
['foo', '', 'bar'] 
+0

Lưu ý rằng "foo \ r \ nbar" .splitlines() trả về ['foo', 'bar']. CRLF/CR/LF được công nhận nhưng LFCR được xem là 2 dòng. –

1
s = re.split(r"[~\r\n]+", string_to_split) 

này sẽ cung cấp cho bạn một danh sách các chuỗi trong s.

+1

Mặc dù, nếu bạn nghĩ rằng '' một \ n \ nb'' nên được chia thành ba chuỗi (''a'','' '', và'' b''), điều này sẽ thất bại. –

+0

Đó là sự thật, điều này sẽ bỏ qua các dòng trống. – tkerwin

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