删除字符串中的换行符、制表符、回车 returns 等转义字符

Remove escaped characters like new line, tabs, carriage returns, etc. inside a string

如何删除转义和转义的转义换行符、制表符回车 returns 等?

sentence = "\ndirty string \n \n \\n \t\t\\t \r\r\\r"

经典的暴力破解方法是

" ".join(sentence.split())

但转义字符仍然存在:

"dirty string \n \\n \t\\t \r\\r"

如何转换我的字符串,使其看起来像:

"dirty string"

使用正则表达式模式,例如 (\n|\r|\t|\)

输入:

sentence = "\ndirty string \n \n \\n \t\t\\t \r\r\\r"

删除:

import re
x = re.sub(r"(\n|\r|\t|\)", "", sentence).strip()

结果:

'dirty string'
sentence = "\ndirty string \n \n \\n \t\t\\t \r\r\\r"\

print(''.join(s for s in sentence if (s.isalnum() or (s == ' '))))
# Output: dirty string  n n tt rr

看你的句子,有些字母没有转义。我在可以看到的转义字符周围加上了括号:

"(\n)dirty string (\n) (\)n (\)(\)n (\t)(\)t(\)(\)t (\r)(\)r(\)(\)r"

在这个字符串文字中,括号外的任何字符都没有被转义,你应该考虑是否要丢弃它们。

虽然 \n 是转义字符,但 \n 不是。这就是为什么在 sentence.split().

之后留下 \n \\n \t\\t \r\\r 这样的字符串的原因

这将 return 所需的输出:

result=" ".join(word for word in sentence.split() if not word.startswith("\"))

它将句子分解为单词,去除任何前导或尾随空格,但只考虑不以反斜杠开头的单词。请记住 \n 之类的东西不是转义字符,而是文字字符串 \n.

的表示

顺便说一句,我不会将您的尝试称为“蛮力”,因为 split()strip()join()replace() 等字符串函数适用于正好解决这类问题。