提问者:小点点

Python分割字符串\n字符[重复]


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

shellreturn = subprocess.check_output(["C:\Python34\python",root.wgetdir + "\html2text.py", keyworddir + "\\" + item])
print(shellreturn)
shelllist = (str(shellreturn).split("\\n"))

共2个答案

匿名用户

这里有bytes而不是str。把它解码成弦状

shellreturn = shellreturn.decode()

shellreturn = str(shellreturn, 'utf-8')

解码后,您可以使用。拆分('\n')。拆分行()

匿名用户

shellreturn = subprocess.check_output(["C:\Python34\python",root.wgetdir + "\html2text.py", keyworddir + "\\" + item])
print(shellreturn)
shelllist = (str(shellreturn).split("\\n"))

子进程的参数。check_输出因未正确转义\和未使用操作系统而招惹麻烦。路径加入,但这不是问题所在。您确实在“\\”以及“\\n”中转义了\n。让我们看一下示例数据以及它会发生什么:

b"PMSI Direct \n262 Old New Brunswick Rd., Unit M \nPisca..."

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

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