Удалить справа налево символ в 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'
Таким образом, вы можете быть уверены, что он будет удален с помощью фильтра выше.