我正在做一个项目(基于内容的搜索),因为我在 Ubuntu 中使用“pdftotext”命令行实用程序,它将所有文本从 pdf 写入某个文本文件。 但它也写项目符号,现在当我读取文件以索引每个单词时,它也会获得一些转义序列索引(如'\x01')。我知道它是因为项目符号(•)。
我只想要文本,所以有什么办法可以删除这个转义序列。我做过这样的事情
escape_char = re.compile('\+x[0123456789abcdef]*')
re.sub(escape_char, " ", string)
但这不会删除转义序列
提前致谢。
最佳答案
问题是 \xXX
只是控制字符的表示,而不是字符本身。因此,除非您使用字符串的 repr
,否则您不能按字面意思匹配 \x
。
您可以使用字符类删除不可打印的字符:
re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff]', '', text)
例子:
>>> re.sub(r'[\x00-\x1f\x7f-\xff]', '', ''.join(map(chr, range(256))))
' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
关于python - 如何在 python 中删除转义序列,如 '\xe2' 或 '\x0c',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14946109/