字符串中的隐藏unicode字符集

时间:2019-01-30 09:17:32

标签: python python-3.x unicode python-unicode

一些隐藏的Unicode字符集出现在需要删除的字符串中。

我有一个很大的文本,该文本是使用PyPDF2软件包从PDF文件中提取的。现在,此提取的文本中存在很多问题(例如,PDF中表中结构化的文本在提取时会随机出现),并且许多特殊字符也嵌入其中(例如~~~~~~~,}}} }}}}}等),尽管当以PDF文件查看时这些文本不存在。我尝试使用thisthisthis链接中描述的解决方案删除这些字符,但问题仍然出现

myText = "There is a set of hidden character here => <= but it will get printed in console"

print(myText)

现在,我想要一个没有这些隐藏字符的纯净文本。

1 个答案:

答案 0 :(得分:3)

字符\x7fascii character DEL,它说明了您的尝试为何无效的原因。要删除所有“特殊” ASCII字符,请使用以下代码:

有关字节数,请参见此处。解码documentation

import string
a = b'There is a set of hidden character here =>\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f <= but i will get printed in console'
print(repr(a))
print(repr(''.join(i for i in a.decode('ascii', 'ignore') if i in string.printable)))

或者如果您不想导入字符串,则执行以下操作:

a = b'There is a set of hidden character here =>\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f <= but i will get printed in console'
print(repr(a))
print(repr(''.join(i for i in a.decode('ascii', 'ignore') if 31 < ord(i) < 127 or i in '\r\n')))