【问题标题】:Python: Replace non ascii characters in a list of stringsPython:替换字符串列表中的非 ascii 字符
【发布时间】:2013-06-20 20:20:40
【问题描述】:

我知道在 stackoverflow 上有很多非 ascii 字符的问题,但是由于我是一个完全的新手,所以我没有成功实施它们的运气,而且我发现整个 'unicode' 概念很难理解。

所以我有一个清单 -

mylist = ["apple", "samsung", "toshiba", "Don’t know", "Can’t recall"] 

我想访问索引 3 和 4 处的单引号并将它们替换为撇号。

我试过了:

# -*- coding: utf-8 -*-
mylist = ["hello", "don't know", "Don’t know", "Can't recall"]
for word in mylist:
    word.replace(u"’", "'")
print mylist

我收到以下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3: ordinal not in range(128)

不确定这是否有用,但我使用的是 python 版本 2.x,我知道如果我使用的是版本 3,则可能不会出现此问题。

谢谢!

【问题讨论】:

    标签: python replace non-ascii-characters


    【解决方案1】:
    >>> mylist = ["apple", "samsung", "toshiba", "Don’t know", "Can’t recall"]
    >>> [item.replace('\xe2\x80\x99',"'") for item in mylist]
    ['apple', 'samsung', 'toshiba', "Don't know", "Can't recall"]
    

    如果所有项目都已经是 unicode:

    >>> mylist = [u"apple", u"samsung", u"toshiba", u"Don’t know", u"Can’t recall"]
    >>> [item.replace(u'’',u"'") for item in mylist]
    [u'apple', u'samsung', u'toshiba', u"Don't know", u"Can't recall"]
    

    【讨论】:

    • 两个都试过了,要么我得到一个错误要么这个:['hello', "don't know", 'Don\xe2\x80\x99t know', "Can't remember"] 奇怪.
    • @Boosted_d16 对我来说很好,不要忘记在源代码中使用这一行:# -*- coding: utf-8 -*-ideone.com/HSlDx5
    • 不知道为什么它以前不工作,但现在工作正常。干杯阿什维尼。
    猜你喜欢
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2013-09-08
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多