У меня есть много строк в формате Юникод, таких как углеродные сополимеры-III \ n12- Géotechnique \ п и многие другие, имеющие множество различных символов Unicode, в строковую переменную с именем txtWords.Поддержание последовательности строк до и после преобразования в ASCII
Моя цель - удалить все символы, отличные от ASCII , при сохранении согласованности строк. Например, я хочу первую очередь предложения в углерода сополимеров III или углерода сополимеров III (без индивидуальной чувствительности здесь), а второй к geotechnique \ п и так далее ...
В настоящее время я используя следующий код, но это не помогает мне достичь того, что я ожидаю. Текущий код изменяет углерода сополимеры III к углерода copolymersiii который, безусловно, не то, что должно быть:
import unicodedata, re
txtWords = unicodedata.normalize('NFKD', txtWords.lower()).encode('ascii','ignore')
txtWords = re.sub(r'[^a-z^\n]',r' ',txtWords)
Если я использую код регулярок первый, то я получаю что-то хуже (в плане того, что я ожидал) :
import unicodedata, re
txtWords = re.sub(r'[^a-z^\n]',r' ',txtWords)
txtWords = unicodedata.normalize('NFKD', txtWords.lower()).encode('ascii','ignore')
Таким образом, для строки Géotechnique \ п я получаю otechnique!
Как решить эту проблему?
См Unidecode: HTTPS: //pypi.python .org/pypi/Unidecode/ –
Это зависит от того, почему это сокращение требуется для ASCII. Чтобы ваше регулярное выражение было полезным, вы должны сначала применить регулярное выражение, а затем закодировать его до ASCII. – roeland
@roeland. Хорошо, если я сначала применил регулярное выражение, то получилось еще хуже: ** Géotechnique \ n ** станет ** otechnique ** – Amir