【问题标题】:Python saving string to file. Unicode errorPython 将字符串保存到文件。 Unicode 错误
【发布时间】:2012-01-22 13:00:27
【问题描述】:

我正在使用 Python 中的电子表格 API 从 Google 电子表格中提取数据。我可以使用 for 循环在命令行上打印电子表格的每一行,但某些文本包含符号,例如摄氏度符号(小圆圈)。当我在命令行上打印这些行时,我想将它们写入文件。但是当我这样做时,我会得到不同的 unicode 错误。我尝试通过手动解决它,但是太多了:

current=current.replace(u'\xa0',u'')
current=current.replace(u'\u000a',u'p')
current=current.replace(u'\u201c',u'\"')
current=current.replace(u'\u201d',u'\"')
current=current.replace(u'\u2014',u'-')

我该怎么做才能不出错? 例如

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

current=current.replace(u'\u0446',u'u')

【问题讨论】:

    标签: python unicode ascii utf


    【解决方案1】:

    您想从它所在的任何编码中对其进行解码:

    decoded_str = encoded_str.decode('utf-8')
    

    有关如何处理 unicode 字符串的更多信息,请参阅http://docs.python.org/howto/unicode.html

    【讨论】:

      【解决方案2】:
      import unicodedata
      decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore')
      

      我不太确定在这种情况下是否需要规范化。此外,忽略选项意味着您可能会丢失一些信息,因为解码错误将被忽略。

      【讨论】:

        【解决方案3】:
        ''.join(c for c in current if ord(c) < 128)
        

        【讨论】:

        • 不确定@TylerDurden 想摆脱non-ascii chararters !
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-12
        • 2013-09-25
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多