在Python 3中,在Windows 7中,我将网页读入字符串。
然后,我想将字符串拆分为换行符的列表。
不能将换行符作为split()
中的参数输入到代码中,因为我得到了一个语法错误
“扫描字符串文字时的'EOL”
如果输入字符\
和n
,就会出现Unicode错误。
有什么办法吗?
发布于 2014-06-16 06:22:40
Python中的✨拆分行:
您试过使用str.splitlines()
方法吗?:
从医生那里:
str.splitlines([keepends])
返回字符串中行的列表,在行边界处断开。除非给出keepends
并为真,否则结果列表中不包括换行。
例如:
>>> '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位字符串的行边界,而后者使用的是其中的超集,其中还包括:
\v
或\x0b
:行表(在3.2
中添加)。\f
或\x0c
:Feed (在3.2
中添加)。\x1c
:文件分隔器。\x1d
:分组分离器。\x1e
:记录分离器。\x85
:下一行(C1控制代码)。\u2028
:线分离器。\u2029
:段落分隔器。分裂线与分裂:
与给出分隔符字符串sep时的
str.split()
不同,此方法返回空字符串的空列表,并且终止行中断不会导致额外的行:
>>> ''.splitlines()
[]
>>> 'Line 1\n'.splitlines()
['Line 1']
当str.split('\n')
返回时:
>>> ''.split('\n')
['']
>>> 'Line 1\n'.split('\n')
['Line 1', '']
✂️删除其他空白:
如果您还需要删除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建议的那样,问题来自打印。关于这一点,有一个相关的问题可能对您有用:, print function
发布于 2014-06-16 06:20:18
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
,而且它也能工作
https://stackoverflow.com/questions/24237524
复制相似问题