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

2024-09-29 23:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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"

Tags: 方法字符串stringsentence制表符split经典join
3条回答
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|\\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'

例如,\n是转义字符,而\\n不是。这就是为什么在sentence.split()之后留下像\\n \\\\n \\t\\\\t \\r\\\\r这样的字符串

这将返回所需的输出:

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

它将句子分解为单词,将任何前导或尾随空格分隔开,但只考虑不以反斜杠开头的单词。记住\\n不是转义字符,而是文本字符串\n的表示

顺便说一句,我不会称您的尝试为“暴力”,因为像split()strip()join()replace()等字符串函数正是为了解决这类问题

相关问题 更多 >

    热门问题