混合整数和unicode时的另一个UnicodeEncodeError

时间:2015-07-28 11:40:29

标签: python unicode openpyxl

我的代码:

import openpyxl

file_location = "test.xlsx"

wb = openpyxl.load_workbook(file_location, use_iterators=True)
sheet = wb.get_sheet_by_name("Blad1")

count = 1
rows_count = sheet.max_row

while count < rows_count:
    print sheet["C" + str(count)].value + " " + str(sheet["D" + str(count)].value) + " " + str(sheet["E" + str(count)].value) + " " + sheet["F" + str(count)].value
    count = count + 1

我正在尝试读取.xlsx文件。一切都打印得很好,直到我到达一个有“Ä”字符的单元格以及数字,我得到了这个错误。

print sheet["C" + str(count)].value + " " + str(sheet["D" + str(count)].value) + " " + str(sheet["E" + str(count)].value) + " " + sheet["F" + str(count)].value
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 11: ordinal not in range(128)

我想我知道问题是什么,但我不知道如何解决它。我正在使用Python 2.7

4 个答案:

答案 0 :(得分:0)

由于事实“Ä”而导致的此ID不由str()字符集

处理

ASCII尝试将其转换为encode()个字符,因此会抛出错误而不是utf-8并且{Ä“由a=u"Ä" a u'\xc4' str(a) --------------------------------------------------------------------------- UnicodeEncodeError Traceback (most recent call last) <ipython-input-368-202e444820fd> in <module>() ----> 1 str(a) UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 0: ordinal not in range(128) a.encode("utf-8") '\xc3\x84' print a.encode("utf-8") 处理,因此请使用该方法

{{1}}

答案 1 :(得分:0)

问题在于你将unicode字符串传递给print语句。

尝试这样的事情:

for row in ws.iter_rows(): # let openpyxl worry about rows
    print " ".join(cell.value.encode("utf-8") for cell in row[3:7])

答案 2 :(得分:0)

我的坏。我刚刚删除了str(),一切正常!感谢所有试图提供帮助的人!

答案 3 :(得分:-1)

尝试使用str.encode()而不是str()。

myString.encode(encoding='UTF-8',errors='strict')