use*_*305 17 python string split
在Win7的python3中,我将网页读入字符串.
然后,我想将字符串拆分为换行符中的列表.
我不能在我的代码中输入换行符作为split()中的参数,因为我在扫描字符串文字时遇到语法错误'EOL'
如果我输入字符\和n,我会收到Unicode错误.
有什么办法吗?
Dan*_*ger 52
你尝试过使用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']
Run Code Online (Sandbox Code Playgroud)
此方法使用通用换行方法来分割线.
的Python之间的主要区别2.X和Python 3.X在于,前者使用万能换行的方法来分割线,所以"\r","\n"和"\r\n"被认为是8位串行边界,而后者使用的它的超集,其中还包括:
\v或\x0b:行列表(在Python中添加3.2).\f或\x0c:Form Feed(在Python中添加3.2).\x1c:文件分隔符.\x1d:组分隔符.\x1e:记录分隔符.\x85:下一行(C1控制代码).\u2028:行分隔符.\u2029:段落分隔符.与给定
str.split()分隔符字符串sep时不同,此方法返回空字符串的空列表,并且终端换行符不会产生额外的行:
>>> ''.splitlines()
[]
>>> 'Line 1\n'.splitlines()
['Line 1']
Run Code Online (Sandbox Code Playgroud)
虽然str.split('\n')回报:
>>> ''.split('\n')
['']
>>> 'Line 1\n'.split('\n')
['Line 1', '']
Run Code Online (Sandbox Code Playgroud)
如果您还需要删除被忽略的其他前导或尾随空格(如空格),则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']
Run Code Online (Sandbox Code Playgroud)
最后,如果要从结果列表中过滤掉空字符串,可以使用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']
Run Code Online (Sandbox Code Playgroud)
由于您发布的错误表明和Burhan建议,问题来自打印.有一个相关的问题可能对你有用:UnicodeEncodeError:'charmap'编解码器无法编码 - 字符映射到<undefined>,打印功能
a.txt
this is line 1
this is line 2
Run Code Online (Sandbox Code Playgroud)
代码:
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', '']
Run Code Online (Sandbox Code Playgroud)
我用的是 Linux,但我猜你只\r\n在 Windows 上使用,它也可以工作
| 归档时间: |
|
| 查看次数: |
78944 次 |
| 最近记录: |