Обрабатывать UnicodeEncodeError в python2.7 - PullRequest
0 голосов
/ 28 мая 2019

У меня есть следующий код:

    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 Ответ

1 голос
/ 28 мая 2019

Если вы потенциально имеете дело с не-ASCII текстом в python2, тогда выполните

str(some_text)

обычно плохая идея, потому что вы получите UnicodeEncodeError, если some_text содержит символы не ASCII. Правильный код будет

unicode(some_text)

as unicode() не будет пытаться закодировать ваш текст как ASCII.

Однако, учитывая этот код

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

очень вероятно, что row['CustomerName'] уже уже a unicode объект, поэтому вызов unicode для него будет излишним. Это, вероятно, будет работать:

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

Подводя итог: удалите вызов str. Если это не сработает, попробуйте заменить str на unicode.

...