python unicode用空字符串替换反斜杠u

时间:2018-07-17 12:26:50

标签: python

我正在对熊猫数据框进行消毒,并且遇到其中带有u且带有反斜杠的unicode字符串,而不是我需要替换的字符串。

u'\u2014'.replace('\u','')
Result: u'\u2014'

我尝试将其编码为utf-8,然后将其解码,但这没有用,我觉得必须有一种更简单的方法来解决这个问题。

熊猫代码

merged['Rank World Bank'] = merged['Rank World Bank'].astype(str)

错误

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 0: ordinal not in range(128)

2 个答案:

答案 0 :(得分:3)

u'\u2014'实际上是-。这不是数字。这是一个utf-8字符。尝试使用print关键字进行打印。你会知道的

这是ipython中的输出:

In [4]: print("val = ", u'\u2014')
val =  —

根据您的评论,这是您在做什么错 “-”与“ EM Dash” Unicode字符(u'\ u2014')不同

因此,您应该执行以下操作

print(u'\u2014'.replace("\u2014",""))

那将起作用

编辑: 由于您使用的是python 2.x,因此必须使用utf-8对其进行编码,如下所示

u'\u2014'.encode('utf-8').decode('utf-8').replace("-","")

答案 1 :(得分:0)

是的,因为它将'2014'后跟'\ u'作为Unicode字符串而不是字符串文字。

可以帮助解决的问题:

  • 使用.encode('ascii','ignore')转换为ASCII
  • 在使用熊猫时,可以使用“ encoding”参数并在其中传递“ ascii”。
  • 改为执行此操作:u'\ u2014'.replace(u'\ u2014',u'2014')。encode('ascii','ignore')

希望这会有所帮助。