用Python(希伯来语)删除从右到左的字符\ u200f

时间:2017-10-23 20:28:38

标签: python python-3.x pandas unique right-to-left

我有一个数据框,我想要特定列的唯一字符串。这些字符串是希伯来语。

因为我正在使用pandas数据帧,所以我写道:all_names = history.name.unique()history是带有name列的数据框。)

我使用\u200f字符获得了奇怪的副本。与ערן一样,另一个与\u200f

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

如何删除这些字符? (来自原始数据框)

1 个答案:

答案 0 :(得分:2)

您可以通过apply基于re.sub的所有功能过滤掉所有非字母和非空格(以Unicode为单位)来清除name字符串name列中的值。

例如(假设Python 3正确处理Unicode):

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

\w includes all Unicode word characters(包括数字)和\s包含所有Unicode空白字符。

顺便说一下,困扰你的\u200f(又名RIGHT-TO-LEFT MARK)在Unicode代码点类别“Other,Format”中:

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

所以,你可以确定它将被上面的过滤器删除。