Набор скрытых символов Юникода в строке - PullRequest
0 голосов
/ 30 января 2019

Некоторый скрытый набор символов Юникода появляется в строке, которую необходимо удалить.

У меня очень большой текст, который извлекается из файла PDF с использованием пакета PyPDF2.Теперь у этого извлеченного текста есть много проблем (например, текст в таблицах внутри PDF, которые были структурированы, будут отображаться случайным образом при извлечении), и в него также встраивается множество специальных символов (например, ~~~~~~~,}}}}}}}} и т. д.) хотя эти тексты отсутствуют при просмотре в виде файла PDF.Я пытался удалить эти символы, используя решение, описанное в этой , этой и этой ссылке, но проблема все еще появляется

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

print(myText)

Теперь яхотел бы иметь чистый текст без этих скрытых символов.

1 Ответ

0 голосов
/ 30 января 2019

Символ \x7f является символом ascii DEL , который объясняет, почему ваши попытки не сработали.Чтобы удалить все «специальные» символы ascii, используйте этот код:

См. Здесь документацию bytes.decode .

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')))
...