【问题标题】:Remove \n from string python 3.6从字符串 python 3.6 中删除 \n
【发布时间】:2018-04-06 11:55:40
【问题描述】:

我正在尝试从 nslookup 的输出中删除 \n 字符。虽然这似乎是一项简单的任务,并且有很多关于过滤的帖子 \n 但它们似乎对我不起作用。代码在 Python 2.7 中完美运行,但在 3.6 中却不行

mx = str(subprocess.check_output(('nslookup -type=mx ' + "test.nl"), shell=True))

clean = re.sub(r"\n", " ", mx)
clean2 = mx.replace("\n", " ")

print(clean)
print(clean2)

输出

\nNon-authoritative answer:\ntest.nl\tmail exchanger

想要的结果

 Non-authoritative answer: test.nl\tmail exchanger

这些都不起作用,但是当我删除“\”时,它会完美地过滤掉“n”。谁能告诉我我做错了什么?或者我怎样才能达到想要的结果?

ps:很清楚这可能是重复的,我只是犯了一个愚蠢的错误,但是类似帖子中给出的解决方案对我不起作用。

【问题讨论】:

  • str.replace("\n", " ") 对我有用......无法真正重现。能提供一下mx的具体内容吗?
  • 显示 print(mx), print(type(mx)),因为简单的替换效果很好
  • 在 python2.7 中完美你的代码:/
  • re.sub(r"\n", " ", "foo\nbar") 在 Python 3 中也可以正常工作。结果:'foo bar'
  • @inye what.. 你完全正确,它在 python 2.7 中确实有效,但在 3.6.5 中却没有:o

标签: python string python-3.x replace nslookup


【解决方案1】:

当您使用 \n 进行替换时,它被 python 解释为换行符,或者被 Regex 解释为换行符。

您可以使用原始字符串,这样 Python 就不会解析 \n:

clean = mx.replace(r"\n", " ")

或者你可以转义符号:

clean = mx.replace("\\n", " ")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多