Python按\ n字符拆分字符串

时间:2014-05-08 06:14:29

标签: python list split newline

我有一个长字符串,其中包含许多应该是新行字符的转义序列。为了正确地写这个字符串,我认为最好根据\ 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 个答案:

答案 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}}的方式也很重要。