【问题标题】:How to replace non-ASCII characters如何替换非ASCII字符
【发布时间】:2016-01-12 09:48:55
【问题描述】:

我有一个格式为email [ à ] example.com的字符串

我想做email@example.com

我试过了:

print email.replace(u"\xa0", "@")
print email.replace(" [ à ] ", "@")
print email.replace(" à ", "@")
email = email.replace(u" à ", "@")

但我总是收到此错误:

'ascii' 编解码器无法解码位置 3 中的字节 0xc3:序数不在范围内(128)

【问题讨论】:

    标签: python python-2.7 ascii


    【解决方案1】:

    或者,如果您不想使用 unicode 字符串,请使用:

    In [8]: email = 'email [ à ] domain.fr'
    
    In [9]: email.replace(' [ \xc3\xa0 ] ', '@')
    Out[9]: 'email@domain.fr'
    

    【讨论】:

    • 我没有投反对票,但我相信始终对 unicode 字符串进行操作(在解码任何输入之后)而不是替换原始字节是一种更好的做法。
    • 公平,有道理!
    【解决方案2】:

    如果您对字符串和替换都使用unicode 类型,它会起作用:

    >>> email = u"email [ à ] domain.fr"
    >>> email.replace(u" [ à ] ", u"@")
    u'email@domain.fr'
    

    要从str 中获取unicode 对象,请使用.decode()

    email.decode("utf-8")  # or provide another encoding
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 2011-08-10
      • 2015-08-14
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多