如何在新行字符上拆分python字符串

use*_*305 17 python string split

在Win7的python3中,我将网页读入字符串.

然后,我想将字符串拆分为换行符中的列表.

我不能在我的代码中输入换行符作为split()中的参数,因为我在扫描字符串文字时遇到语法错误'EOL'

如果我输入字符\和n,我会收到Unicode错误.

有什么办法吗?

Dan*_*ger 52

✨Python中的分割线:

你尝试过使用str.splitlines()方法吗?:

来自文档:

str.splitlines([keepends])

返回字符串中的行列表,在行边界处断开.除非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:段落分隔符.

分裂线VS分裂:

与给定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>,打印功能


lai*_*e9m 3

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 上使用,它也可以工作

  • @user1067305您最好将 err msg 和 **code** 添加到您的问题中。 (2认同)