У меня есть несколько строк, как это:Как эффективно удалить не-ASCII символы и цифры, но сохранить акцентированные символы ASCII
s = u'awëerwq\u0645\u0631\u062d\u0628\u0627\u043c\u0438\u0440bròn 1990 23x4 + &23 \'we\' we\'s mexicqué'
s
"awëerwq مرحباмир bròn 1990 23x4 + &23 'we' we's mexicqué"
Я не мог найти способ, чтобы удалить непечатаемые вещи, как «مرحبا ми» , но сохраняя латинские символы, такие как «...». Также цифры (например, «1990») нежелательны в моем случае. Я использовал ASCII
флаг от re
, но я не знаю, что с этим не так, потому что он удаляет «óëé, ...». Это та же проблема с использованием string.printable
. я не знаю, почему
ord('ë')
235
Учитывая, что в таблице ASCII ему присваивается 137. Результат, я бы ожидать, что-то вроде этого:
x = some_method(s)
"awëerwq bròn 23x4 we we s mexicqué"
Тогда, я хотел бы кодировать с не зависит от незафиксированной кодификации.
Похоже, вы хотите, чтобы символы с символом 'ord (c) <256', но исключая символы типа' + 'и' ''. Вам может быть лучше с жестко закодированной строкой со всеми символами, которые вы хотите сохранить, а затем просто выполните «.» .join (c для c in s if c in okay_chars). – TigerhawkT3
Извините, я неправильно понял вопрос. Вы хотите сохранить все символы, используемые в кодовой странице 437, а не ASCII, но выборочно удалять номера. '' '235, потому что это его значение в unicode. 137 - это значение на кодовой странице 437. –
Подождите, если вы не хотите номера, как '23x4' сделать разрез? – TigerhawkT3