我有一个长字符串,其中包含许多应该是新行字符的转义序列。为了正确地写这个字符串,我认为最好根据\ n字符拆分字符串,然后分别在结果列表中写入每个字符串以达到预期的效果。但是,这不起作用,只是没有正确分割它们。下面是我的代码,为了清楚我已经尝试了\ n和\ n作为拆分,因为我试图在字符串中的文字\ n分割。谢谢你的帮助。
shellreturn = subprocess.check_output(["C:\Python34\python",root.wgetdir + "\html2text.py", keyworddir + "\\" + item])
print(shellreturn)
shelllist = (str(shellreturn).split("\\n"))
答案 0 :(得分:4)
此处有bytes
而非str
。将其解码为字符串,如
shellreturn = shellreturn.decode()
或
shellreturn = str(shellreturn, 'utf-8')
解码后,您可以使用.split('\n')
或.splitlines()
。
答案 1 :(得分:0)
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"
中逃脱了\。让我们看看样本数据以及它会发生什么:
b"PMSI Direct \n262 Old New Brunswick Rd., Unit M \nPisca..."
b"
标记表明这是Python文字语法中的字节。这意味着\转义序列是转义序列,与原始字符串(r前缀)不同。因此,此处的行分隔符为"\n"
,而不是"\\n"
。如果您将"\\n"
拆分为text_file
,则找不到任何内容,因此您将原始字符串作为列表中的唯一项目。找不到分隔符时,这是正确的拆分。
另一个复杂因素是您似乎在Windows上运行,其中' \ n'不是换行符的操作系统格式。他们使用' \ r \ n'当您open文本文件时,Python通常会在幕后处理,因此您打开{{1}}的方式也很重要。