首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnicodeEncodeError:'ascii‘编解码器不能在10-11位置编码字符:序数不在范围内(128个)

UnicodeEncodeError:'ascii‘编解码器不能在10-11位置编码字符:序数不在范围内(128个)
EN

Stack Overflow用户
提问于 2014-02-10 20:49:59
回答 1查看 1.8K关注 0票数 1

我正试着做一个剧本。脚本,该脚本将搜索.xls文件并打印出条件为真的行。我对此没意见。但是,当我需要在文件中写入该行时,我会遇到问题。

这是代码:

代码语言:javascript
复制
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')

所以,一系列的假设,以确保行完全正确。但是,当我尝试运行它时,我得到了错误: UnicodeEncodeError:'ascii‘编解码器不能在10-11位置编码字符:序数不在范围内(128),我搜索并发现这是因为在.xls文件中我有这样的字符:.我很确定

代码语言:javascript
复制
    new_cell_value = cell_value.encode('ascii','ignore')

行应该修复它,但它不会发生。请帮帮忙,我不知道我做错了什么。如果你需要更多的额外信息。我有Python2.7.3,运行ubuntu12.04

编辑:哦,那些角色对我来说不是很重要,所以如果需要的话,我可以失去它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 21:02:40

这里的问题是if语句。

代码语言:javascript
复制
>>> uni = u"\u04533testing"
>>> print uni
ѓ3testing
>>> isinstance(uni, str)
False
>>> type(uni)
<type 'unicode'>

因为这个对象不是字符串,所以它是unicode字符串。因此,这段代码永远不会被击中。你想要的

代码语言:javascript
复制
if isinstance(cell_value,unicode):
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21687615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档