我有一个数据框,我想要特定列的唯一字符串。这些字符串是希伯来语。
因为我正在使用pandas数据帧,所以我写道:all_names = history.name.unique()
(history
是带有name
列的数据框。)
我使用\u200f
字符获得了奇怪的副本。与ערן
一样,另一个与\u200f
all_names
array(['\u200fערן', 'ערן', ...., None], dtype=object)
如何删除这些字符? (来自原始数据框)
答案 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'
所以,你可以确定它将被上面的过滤器删除。