我有一个数据帧,我想要特定列的唯一字符串。字符串是希伯来语。
因为我使用的是熊猫数据帧,所以我写了: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'
因此,您可以确定它会使用上面的过滤器将其删除。