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

Remove Right-to-left character \u200f in Python (Hebrew)

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

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

我收到带有 \u200f 字符的奇怪重复项。喜欢 ערן 和另一个 \u200f

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

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

您可以通过基于 applying a re.sub 的函数过滤掉所有非字母和非空格(Unicode-wise)到 [=] 中的所有值来清理 name 字符串12=]列。

例如(假设 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'

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