UnicodeEncodeError:'ascii'编解码器不能编码位置10-11中的字符:序号不在范围内(128)

我正在做一个脚本。 将search槽.xls文件并打印出条件为真的行的脚本。 对于那件事我没有任何疑问。 我这样做,但是当我需要在一个文件中写这行时有问题。

这是代码:

import xlrd import string dataFile = open('Napadaci.txt', 'w') workbook = xlrd.open_workbook('TBS_58_pos10_stars75_2014-02-09.xls') worksheet = workbook.sheet_by_name('Sheet1') num_rows = worksheet.nrows - 1 num_cells = worksheet.ncols - 1 curr_row = -1 b = 0 new_cell_value = "" while curr_row < num_rows: curr_row += 1 row = worksheet.row(curr_row) curr_cell = 4 cell_value = worksheet.cell_value(curr_row, curr_cell) if cell_value < 17.0: curr_cell = 5 cell_value = worksheet.cell_value(curr_row, curr_cell) if cell_value == 95.0: curr_cell = 9 cell_value = worksheet.cell_value(curr_row, curr_cell) if cell_value == "Tehnical" or cell_value == "Quick" or cell_value == "Head" or cell_value == "Unpredictable": b += 1 dataFile.write(str(b)+'\n') curr_cell = -1 while (curr_cell + 1) < num_cells: curr_cell += 1 cell_value = worksheet.cell_value(curr_row, curr_cell) new_cell_value=cell_value if isinstance(cell_value, str): new_cell_value = cell_value.encode('ascii','ignore') dataFile.write(str(new_cell_value)+'\n') dataFile.write(str('Trazim sljedeceg')+'\n'+'\n'+'\n'+'\n') 

所以,一堆ifs,以确保行是完全正确的。 但是,当我尝试运行它时,我得到错误:UnicodeEncodeError:'ascii'编解码器不能编码字符位置10-11:序号不在范围内(128)我GOOGLE了,发现是因为在.xls文件我有这样的字符:҇等等我将通过所有单元格一个接一个,我认为我只需要解决这个在我有string的单元格,因此最后如果。 我很确定

  new_cell_value = cell_value.encode('ascii','ignore') 

行应该解决它,但它不会发生。 请帮忙,我不知道我做错了什么。 如果你需要更多的额外信息。 我有Python 2.7.3,我正在运行的Ubuntu 12.04

编辑:哦,那些人物对我来说不是很重要,所以如果需要的话,我可能会失去他们。

这里的问题是if语句。

 >>> uni = u"\u04533testing" >>> print uni ѓ3testing >>> isinstance(uni, str) False >>> type(uni) <type 'unicode'> 

因为这个对象不是一个string,所以它是一个unicodestring。 因此,编码是从来没有被打。 你要

 if isinstance(cell_value,unicode):