一些隐藏的Unicode字符集出现在需要删除的字符串中。
我有一个很大的文本,该文本是使用PyPDF2软件包从PDF文件中提取的。现在,此提取的文本中存在很多问题(例如,PDF中表中结构化的文本在提取时会随机出现),并且许多特殊字符也嵌入其中(例如~~~~~~~,}}} }}}}}等),尽管当以PDF文件查看时这些文本不存在。我尝试使用this,this和this链接中描述的解决方案删除这些字符,但问题仍然出现
myText = "There is a set of hidden character here => <= but it will get printed in console"
print(myText)
现在,我想要一个没有这些隐藏字符的纯净文本。
答案 0 :(得分:3)
字符\x7f
是ascii 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')))