Удалить справа налево символ в Python (иврит)

У меня есть датафрейм, и я хочу уникальные строки определенного столбца. Струны на иврите.

Поскольку я использую панду dataframe, я написал: all_names = history.name.unique() (history это фрейм данных с name колонка).

Я получаю странные дубликаты с \u200f персонаж. подобно ערן и еще один с \u200f

all_names
array(['\u200fערן', 'ערן',  ...., None], dtype=object)

Как я могу удалить этих персонажей? (Из оригинального фрейма данных)

1 ответ

Решение

Вы можете очистить свой name строк, отфильтровывая все не-буквы и непробелы (Unicode-мудрый) apply в re.sub на основе всех значений в name колонка.

Например (при условии Python 3, который правильно обрабатывает Unicode):

>>> import re
>>> history.name.apply(lambda s: s and re.sub('[^\w\s]', '', s))

\w включает все символы слова Unicode (включая цифры) и \s включает все пробельные символы Юникода.

Кстати, \u200f (иначе RIGHT-TO-LEFT MARK) Вас беспокоит то, что в кодовой точке Unicode есть категория "Другое, Формат":

>>> import unicodedata
>>> unicodedata.name('\u200f')
'RIGHT-TO-LEFT MARK'
>>> unicodedata.category('\u200f')
'Cf'

Таким образом, вы можете быть уверены, что он будет удален с помощью фильтра выше.

Другие вопросы по тегам