2010-07-27 138 views
15

我正在讀取來自子流程模塊通信方法的一些數據。它是以「\ r \ n」分隔的大字符串進入的。我想把它分成幾行。這是如何在python中執行的?將由「 r n」分隔的字符串拆分爲行列表?

+1

當你閱讀'string.split()'時,你發現了什麼?你有什麼嘗試?你正在使用什麼教程? – 2010-07-27 15:10:48

回答

33

對字符串使用splitlines方法。

從文檔:

str.splitlines([keepends]) 返回字符串中的線,在斷裂線邊界的列表。 換行符不包含在 結果列表中,除非在給出的情況下爲 並且爲真。

無論操作系統是什麼操作系統,無論是結束行是「\ r \ n」,「\ r」還是「\ n」,這都能做正確的事情。

注意以「\ n \ r」結尾的行也會分裂,但是您會在每行之間得到一個空字符串,因爲它會將「\ n」視爲有效行結尾,將「\ r」視爲結尾下一行。例如

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

請注意,「foo \ r \ nbar」.splitlines()返回['foo','bar']。 CRLF/CR/LF全部被識別,但LFCR被視爲2行。 – 2014-04-29 19:38:43

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

這會給你以s字符串列表。

+1

儘管如果你認爲應該把一個字符分成三個字符串(a'',''''和''b''),這將會失敗。 – 2010-07-27 15:22:02

+0

這是真的,這將忽略空行。 – tkerwin 2010-07-27 15:29:24