【问题标题】:Python split string by \n character [duplicate]Python按\ n字符分割字符串[重复]
【发布时间】:2014-05-08 06:14:28
【问题描述】:

我有一个长字符串,其中包含许多应该是换行符的 \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"))

【问题讨论】:

  • 那么shellreturn 是什么?
  • @frostnational,这里只是一小部分 shellreturn:b"PMSI Direct \n262 Old New Brunswick Rd., Unit M \nPiscataway, NJ 08854 \n800.238.1316 \n\n姓名\n\n公司\n\n电话\n\n电子邮件* _(必填)_\n\n![PMSI Direct, Inc.
  • it is just not splitting them correctly那它是怎么拆分的呢?
  • 我不确定,在frostnational 的帮助下,它现在似乎已经删除了输出中的\n,但它仍然是一行。

标签: python list split newline


【解决方案1】:

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

shellreturn = shellreturn.decode()

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

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

【讨论】:

  • 不幸的是,这仍然将所有内容都保留为一行。
  • @Kyle 现在很清楚了。已更新。
  • 感谢您的更新。我做了你建议的改变。奇怪的是,它确实正确删除了所有 \n,但不允许将它们写在单独的行上。
  • @Kyle 我不确定我是否理解你,显示输出。
  • @Kyle 是。在你的情况下,我只使用 text_file.writelines(shelllist)for i in range(len(shelllist)): text_file.write(str(shelllist[i])+'\n')
【解决方案2】:
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",它将找不到任何内容,因此您将原始字符串作为列表中的唯一项目。当没有找到分隔符时,这是正确的拆分。

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

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2021-01-10
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多