代码之家  ›  专栏  ›  技术社区  ›  Sam B.

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

  •  2
  • Sam B.  · 技术社区  · 7 年前

    我正在清理熊猫数据帧,遇到一个Unicode字符串 u 里面有一个反斜杠,我不需要替换。

    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 回复  |  直到 7 年前
        1
  •  3
  •   rawwar    7 年前

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

    这是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("-","")
    
        2
  •  0
  •   gauravtolani    7 年前

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

    有帮助的事情:

    • 使用.encode(“ascii”,“ignore”)转换为ascii
    • 当您使用pandas时,可以使用“encoding”参数并在那里传递“ascii”。
    • 改为:u''u2014'.替换(u''u2014',u'2014').编码('ascii','ignore')

    希望这有帮助。