У меня есть следующий код:
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'])
@SantoshKarki Я не копирую/вставляю код
Затем проверьте ссылку выше
@SantoshKarki Сообщение, на которое вы ссылаетесь, касается символов, отличных от ASCII, в исходном коде. ОП имеет дело с проблемой кодирования на входе.
Если вы потенциально имеете дело с текстом, отличным от ASCII, в python2, то выполните
str(some_text)
обычно это плохая идея, потому что вы получите UnicodeEncodeError
, если some_text
содержит символы, отличные от ASCII. Правильный код будет
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
.
копирование и вставка кода вызывает \xe9, поэтому избегайте этого. Проверь это