首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在新行字符上拆分Python字符串

如何在新行字符上拆分Python字符串
EN

Stack Overflow用户
提问于 2014-06-16 06:09:23
回答 2查看 235.2K关注 0票数 81

在Python 3中,在Windows 7中,我将网页读入字符串。

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

不能将换行符作为split()中的参数输入到代码中,因为我得到了一个语法错误

“扫描字符串文字时的'EOL”

如果输入字符\n,就会出现Unicode错误。

有什么办法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-16 06:22:40

Python中的✨拆分行:

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

从医生那里:

str.splitlines([keepends]) 返回字符串中行的列表,在行边界处断开。除非给出keepends并为真,否则结果列表中不包括换行。

例如:

代码语言:javascript
运行
复制
>>> '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()不同,此方法返回空字符串的空列表,并且终止行中断不会导致额外的行:

代码语言:javascript
运行
复制
>>> ''.splitlines()
[]

>>> 'Line 1\n'.splitlines()
['Line 1']

str.split('\n')返回时:

代码语言:javascript
运行
复制
>>> ''.split('\n')
['']

>>> 'Line 1\n'.split('\n')
['Line 1', '']

✂️删除其他空白:

如果您还需要删除str.splitlines()忽略的其他前导或尾随空格(如空格),则可以将str.splitlines()str.strip()一起使用。

代码语言:javascript
运行
复制
>>> [str.strip() for str in 'Line 1  \n  \nLine 3 \rLine 4 \r\n'.splitlines()]
['Line 1', '', 'Line 3', 'Line 4']

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

最后,如果要从结果列表中筛选空字符串,可以使用filter()

代码语言:javascript
运行
复制
>>> # 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

票数 182
EN

Stack Overflow用户

发布于 2014-06-16 06:20:18

a.txt

代码语言:javascript
运行
复制
this is line 1
this is line 2

代码:

代码语言:javascript
运行
复制
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,而且它也能工作

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24237524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档