首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python按\n个字符拆分字符串

Python按\n个字符拆分字符串
EN

Stack Overflow用户
提问于 2014-05-08 14:14:29
回答 2查看 10.1K关注 0票数 0

我有一个很长的字符串,它包含许多\n转义序列,这些转义序列应该是换行符。要正确地写入要读取的字符串,我认为最好根据\n字符拆分字符串,然后在结果列表中单独写入每个字符串,以获得所需的效果。然而,这并不起作用,它只是没有正确地拆分它们。下面是我的代码,为了清楚起见,我尝试了\n和\n作为拆分,因为我试图在字符串中的文字\n处拆分。谢谢你的帮助。

代码语言:javascript
运行
复制
shellreturn = subprocess.check_output(["C:\Python34\python",root.wgetdir + "\html2text.py", keyworddir + "\\" + item])
print(shellreturn)
shelllist = (str(shellreturn).split("\\n"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-08 14:15:33

这里有bytes而不是str。将其解码为如下字符串

代码语言:javascript
运行
复制
shellreturn = shellreturn.decode()

代码语言:javascript
运行
复制
shellreturn = str(shellreturn, 'utf-8')

解码后,您可以使用.split('\n').splitlines()

票数 5
EN

Stack Overflow用户

发布于 2014-05-08 14:46:15

代码语言:javascript
运行
复制
shellreturn = subprocess.check_output(["C:\Python34\python",root.wgetdir + "\html2text.py", keyworddir + "\\" + item])
print(shellreturn)
shelllist = (str(shellreturn).split("\\n"))

对subprocess.check_output的争论是因为没有正确地转义和不使用os.path.join而自找麻烦,但这不是问题的关键。您确实在"\\""\\n"中对\进行了转义。让我们看一下示例数据以及它会发生什么情况:

代码语言:javascript
运行
复制
b"PMSI Direct \n262 Old New Brunswick Rd., Unit M \nPisca..."

b"标记表示这是Python文字语法中的字节。这意味着\转义序列是转义序列,与原始字符串(r前缀)不同。所以这里的行分隔符是"\n",而不是"\\n"。如果您将其拆分为"\\n",它将找不到任何项,因此您将获得原始字符串作为列表中的唯一项。当找不到分隔符时,这是正确的拆分。

另一个复杂的问题是,您似乎是在Windows上运行,其中'\n‘不是换行符的操作系统格式。它们使用'\r\n',当你打开open文本文件时,Python通常会在幕后处理它,所以你打开text_file的方式也很重要。

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

https://stackoverflow.com/questions/23534077

复制
相关文章

相似问题

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