小编典典

Pythonpands 替换特殊字符

python

由于某种原因,我无法获得此简单的声明来处理ñ。它似乎可以在其他任何东西上工作,但不喜欢那个角色。有任何想法吗?

DF['NAME']=DF['NAME'].str.replace("ñ","n")

谢谢


阅读 208

收藏
2020-12-20

共1个答案

小编典典

我假设您在这里使用Python 2.x,这可能是Unicode问题。不用担心,您并不孤单-unicode通常非常困难,尤其是在Python 2中,这就是为什么它在Python 3中成为标准的原因。

如果您只关心ñ,则应使用UTF-8解码,然后仅替换一个字符。

看起来类似于以下内容:

DF['name'] = DF['name'].str.decode('utf-8').replace(u'\xf1', 'n')

举个例子:

>>> "sureño".decode("utf-8").replace(u"\xf1", "n")
u'sureno'

如果您的字符串已经是Unicode,则可以(实际上必须)跳过该decode步骤:

>>> u"sureño".replace(u"\xf1", "n")
u'sureno'

请注意,此处u’\xf1’将十六进制转义用于所讨论的字符。

更新资料
我在评论中被告知<>.str.replace是熊猫系列方法,但我没有意识到。对此的答案可能类似于以下内容:

DF['name'] = map(lambda x: x.decode('utf-8').replace(u'\xf1', 'n'), DF['name'].str)

或类似的东西(如果该熊猫对象是可迭代的)。

另一个更新
实际上,我刚想到您的问题可能很简单,如下所示:

DF['NAME']=DF['NAME'].str.replace(u"ñ","n")

请注意,我是如何u在字符串前面添加使其成为unicode的。

2020-12-20