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



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

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

我得到u200f角色的奇怪重复项。就像ערן和另一个有u200f

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

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

您可以通过将基于 re.sub 的函数apply name列中的所有值来过滤掉所有非字母和非空格(Unicode-wise),从而清除name字符串。

例如(假设Python 3,它可以正确处理Unicode):

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

w包括所有 Unicode 字字符(包括数字),s包括所有 Unicode 空格字符。

顺便说一下,困扰您的u200f(又名RIGHT-TO-LEFT MARK)在Unicode代码点类别"其他,格式"中:

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

因此,您可以确定它会使用上面的过滤器将其删除。

最新更新