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

时间:2014-06-16 06:09:24

标签: python string split

在Win7的python3中,我将网页读成字符串。

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

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

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

有什么办法吗?

2 个答案:

答案 0 :(得分:38)

PythonPix中的分割线:

您是否尝试过使用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"和{{1被认为是8位字符串的行边界,而后者使用它的超集,包括:

  • "\r\n"\v:行列表(在Python \x0b中添加)。
  • 3.2\f:表单Feed(在Python \x0c中添加)。
  • 3.2:文件分隔符。
  • \x1c:群组分隔符。
  • \x1d:记录分隔符。
  • \x1e:下一行(C1控制代码)。
  • \x85:行分隔符。
  • \u2028:段落分隔符。

splitlines VS split:

  

str.split()不同,当给定分隔符字符串 sep 时,此方法   返回空字符串的空列表和终端换行符   不会产生额外的一行:

\u2029

>>> ''.splitlines() [] >>> 'Line 1\n'.splitlines() ['Line 1'] 返回时:

str.split('\n')

✂️删除其他空格:

如果您还需要移除>>> ''.split('\n') [''] >>> 'Line 1\n'.split('\n') ['Line 1', ''] 忽略的其他前导或尾随空格(如空格),则可以将str.splitlines()str.strip()一起使用:

str.splitlines()

️删除空字符串(''):

最后,如果您想从结果列表中过滤掉空字符串,可以使用filter()

>>> [str.strip() for str in 'Line 1  \n  \nLine 3 \rLine 4 \r\n'.splitlines()]
['Line 1', '', 'Line 3', 'Line 4']

关于原始问题的补充评论:

由于您发布的错误表明并且Burhan建议,问题来自打印。关于这一点的相关问题可能对您有用:UnicodeEncodeError: 'charmap' codec can't encode - character maps to <undefined>, print function

答案 1 :(得分:1)

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它也可以使用