我有一个长字符串,其中包含许多转义序列,\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"))
这里有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
的方式也很重要。