【问题标题】:Remove Right-to-left character \u200f in Python (Hebrew)在 Python(希伯来语)中删除从右到左的字符 \u200f
【发布时间】:2017-10-23 20:28:38
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以通过apply 将基于re.sub 的函数过滤到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代码点类别“其他,格式”:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2012-01-12
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多