Ошибка Unicode при попытке удалить символы не ascii - PullRequest
0 голосов
/ 08 декабря 2018

Я анализирую CSV-файлы и хотел бы удалить не-ascii символы при их появлении.На самом деле мне нужны только цифры, но когда я пытаюсь удалить нецифровые символы, я получаю UnicodeEncodeError.

У меня есть следующая функция:

def remove_non_ascii(text):
    return ''.join(re.findall("\d+", str(text)))

Также пробовал (простодля удаления символов, отличных от ascii):

def remove_non_ascii(text):
    return ''.join(i for i in str(text) if ord(i)<128)

Когда я печатаю результат следующего, я получаю правильный результат (для обеих функций)

print(remove_non_ascii('E-Mail Adresse des Empfängers'))

Однако, когда я применяюфункция для столбца данных df[col] = df[col].apply(remove_non_ascii), я получаю UnicodeEncodeError.

Что я делаю не так?

1 Ответ

0 голосов
/ 08 декабря 2018

Одно из возможных решений: вам нужно import string и изменить функцию на

setV = set(string.printable)
return ''.join(filter(lambda x: x in setV, text))

Это удалит все символы, не входящие в набор

Просто заметил, что вы указали, что вам нужно толькоцифры.Вот более полезное решение без необходимости импортировать строку:

def remove_non_ascii(text):
    setV = set("1234567890")
    return ''.join(filter(lambda x: x in setV, text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...