Невозможно удалить акцентированные специальные символы в строке, несмотря на использование регулярных выражений - PullRequest
1 голос
/ 02 апреля 2020

У меня есть следующий код

import re
oldstr="HR Director, LearningÂ"
newstr = re.sub(r"[-()\"#/@;:<>{}`+=&~|.!?,^]", " ", oldstr)
print(newstr)

Приведенный выше код не работает.

Текущий результат "Директор по персоналу, обучение"

Ожидаемый результат "Директор по персоналу , Learning "

Как этого добиться?

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Преобразование моего комментария в ответ, чтобы решение было легко найти для будущих посетителей.

Вы можете использовать:

import re
oldstr="HR Director, LearningÂ"
newstr = re.sub(r'[^\x00-\x7f]+|[-()"#/@;:<>{}`+=&~|.!?,^]+', "", oldstr)
print(newstr)

Вывод:

HR Director Learning

[^\x00-\x7f] будет соответствовать всем не-ASCII символам.

0 голосов
/ 02 апреля 2020

Вы также можете использовать этот метод:

def _removeNonAscii(s): 
    return "".join(i for i in s if ord(i)<128)

Вот как выводит мой кусок кода:

s = "HR Director, LearningÂ"
def _removeNonAscii(s): 
    return "".join(i for i in s if ord(i)<128)

print(_removeNonAscii(s))

Вывод:

Директор по персоналу, обучение

...