[英]How to split a python string on new line characters
在Win7的python3中,我將網頁讀入字符串。
然后,我想將字符串拆分為換行符中的列表。
我不能在我的代碼中輸入換行符作為split()中的參數,因為我在掃描字符串文字時遇到語法錯誤'EOL'
如果我輸入字符\\和n,我會收到Unicode錯誤。
有什么辦法嗎?
你嘗試過使用str.splitlines()
方法嗎?:
來自文檔:
返回字符串中的行列表,在行邊界處斷開。 除非給出
keepends
且為true,否則換行符不包括在結果列表中。
例如:
>>> 'Line 1\n\nLine 3\rLine 4\r\n'.splitlines()
['Line 1', '', 'Line 3', 'Line 4']
>>> 'Line 1\n\nLine 3\rLine 4\r\n'.splitlines(True)
['Line 1\n', '\n', 'Line 3\r', 'Line 4\r\n']
此方法使用通用換行方法來分割線。
Python 2.X
和Python 3.X
之間的主要區別在於前者使用通用換行方法來分割行,因此"\\r"
, "\\n"
和"\\r\\n"
被視為8的行邊界-bit字符串,而后者使用它的超集,其中還包括:
\\v
或\\x0b
:行列表(在Python 3.2
添加)。 \\f
或\\x0c
:Form Feed(在Python 3.2
添加)。 \\x1c
:文件分隔符。 \\x1d
:組分隔符。 \\x1e
:記錄分隔符。 \\x85
:下一行(C1控制代碼)。 \
:行分隔符。 \
:段落分隔符。 與
str.split()
不同,當給定分隔符字符串sep時 ,此方法返回空字符串的空列表,並且終止換行符不會產生額外的行:
>>> ''.splitlines()
[]
>>> 'Line 1\n'.splitlines()
['Line 1']
而str.split('\\n')
返回:
>>> ''.split('\n')
['']
>>> 'Line 1\n'.split('\n')
['Line 1', '']
如果還需要刪除str.splitlines()
忽略的其他前導空格或尾隨空格(如空格str.splitlines()
,則可以將str.splitlines()
與str.strip()
一起使用:
>>> [str.strip() for str in 'Line 1 \n \nLine 3 \rLine 4 \r\n'.splitlines()]
['Line 1', '', 'Line 3', 'Line 4']
最后,如果要從結果列表中過濾掉空字符串,可以使用filter()
:
>>> # Python 2.X:
>>> filter(bool, 'Line 1\n\nLine 3\rLine 4\r\n'.splitlines())
['Line 1', 'Line 3', 'Line 4']
>>> # Python 3.X:
>>> list(filter(bool, 'Line 1\n\nLine 3\rLine 4\r\n'.splitlines()))
['Line 1', 'Line 3', 'Line 4']
由於您發布的錯誤表明和Burhan建議,問題來自打印。 有一個相關的問題可能對你有用: UnicodeEncodeError:'charmap'編解碼器無法編碼 - 字符映射到<undefined>,打印功能
A.TXT
this is line 1
this is line 2
碼:
Python 3.4.0 (default, Mar 20 2014, 22:43:40)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> file = open('a.txt').read()
>>> file
>>> file.split('\n')
['this is line 1', 'this is line 2', '']
我在Linux上,但我想你只是在Windows上使用\\r\\n
,它也可以工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.