在python2.7中处理UnicodeEncodeError

时间:2019-05-28 14:26:21

标签: python string unicode character-encoding

我有以下代码:

    for index, row in df_out.iterrows():
        yield {
               'CustomerName': str(row['CustomerName'])
              }

我得到了UnicodeEncodeError:

RuntimeError: UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 10: ordinal not in range(128)

如何处理该零件以避免该错误?

str(row['CustomerName'])

1 个答案:

答案 0 :(得分:1)

如果您有可能在python2中处理非ASCII文本,请执行

str(some_text)

通常是个坏主意,因为如果UnicodeEncodeError包含非ASCII字符,则会得到一个some_text。正确的代码是

unicode(some_text)

unicode()不会尝试将文本编码为ASCII。

但是给出了这段代码

for index, row in df_out.iterrows():
    yield {
           'CustomerName': str(row['CustomerName'])
          }

row['CustomerName']很可能已经是unicode对象,因此调用unicode可能是多余的。这可能会起作用:

for index, row in df_out.iterrows():
    yield {
           'CustomerName': row['CustomerName']
          }

总结一下:删除str调用。如果不行,请尝试将str替换为unicode