2014-02-10 72 views
1

我試圖讓一個腳本。將搜索槽.xls文件並打印出條件爲真的行的腳本。對於那件事我沒有任何疑問。不過,我需要在文件中寫入該行時遇到問題。UnicodeEncodeError:「ASCII」編解碼器不能在10-11位字符進行編碼:在範圍序數不(128)

這是代碼:

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:在10-11位置「ASCII」編解碼器不能編碼字符:在範圍序數不(128) 我用Google搜索,發現這是因爲英寸xls文件我有這樣的文字:šć等 我要去低谷所有小區一個接一個,和我計算過,我只需要在細胞來解決這個,我有一個字符串,因此最後如果。 我敢肯定的是,

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

線應該修復它,但它不會發生。請幫忙,我不知道我做錯了什麼。 如果您需要更多的額外信息。我的Python 2.7.3,我運行Ubuntu 12.04

編輯:哦,那些characthers是不是對我來說很重要,所以我在一個位置,如果需要的話失去他們。

回答

1

這裏的問題是if語句。

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

因爲這個對象不是一個字符串,所以它是一個unicode字符串。因此,編碼永遠不會被擊中。 你想要

if isinstance(cell_value,unicode): 
+0

哦,我看到...我不知道。 好吧然後,我刪除了,現在 我得到這個 AttributeError:'浮動'對象沒有屬性'編碼' 我確實使用最後,如果以某種方式編碼時,單元格中有一個字符串。但不幸的是,我真的不知道如何不這樣做,如果不是這樣的話。 – user3294531

+0

這讓我一個星期前好一個小時。請接受答案,如果這爲你工作。 – jbh

+0

哦,男孩,哦,小男孩,它確實工作!非常感謝你明智的先生 – user3294531

相關問題