2015-03-03 85 views
4

我使用xlrd Python的導入一組數據從Excel使用Unicode字符串轉換成它爲Unicode如何使用python

我得到我的字符串中的所有數據是這樣的:文字:u'L \ xc9GENDE '

我操縱這些數據,然後嘗試將它們放回到Excel中(使用xlsxwriter),當我這樣做時,我得到相同的文本塊:u'L \ xc9GENDE'而不是LÉGENDE。

我什麼工作:

#!/usr/bin/env python 
# -*- coding: latin-1 -*- 
import xlsxwriter 
import sys 

workbook = xlsxwriter.Workbook('hello.xlsx') 
worksheet = workbook.add_worksheet() 
data = u'L\xc9GENDE' 
worksheet.write('A1',data) 
workbook.close() 

這會工作,我會得到的Légende在A1單元格

,但如果我試圖操縱一個字符串我已經給我u'L \ xc9GENDE」,它只會顯示大號\ xc9GENDE在A1細胞

---- ----編輯我 使用從Excel

from xlrd import open_workbook 

def grabexcelfile(): 
    wb = open_workbook('leg.xls',encoding_override='latin-1')  
    log = [] 
    txt = '' 
    for s in wb.sheets():   
     for row in range(s.nrows):    
      values = [] 
      for col in range(s.ncols): 
       txt = str(s.cell(row,col)) 
       txt.replace('-',' ',10) 
       log.append(txt) 
    return log    

x = grabexcelfile() 
print type(x[0]),x[0] 
檢索數據的代碼

打印給我:文字:u'L \ xc9GENDE'

+1

看看關於'encode()'的一些東西。 – 2015-03-03 04:24:03

+0

我已經在這至少5個小時。我嘗試使用拉丁-1和utf-8編碼沒有成功 – user3724234 2015-03-03 04:30:51

+0

你試過編碼('ascii','忽略')'? – 2015-03-03 04:37:11

回答

0

而不是試圖操縱文本:u'L \ xc9GENDE」,我反而改變了VAR的Excel的類型是給了我這個:

from xlrd import open_workbook 

def grabexcelfile(): 
    wb = open_workbook('leg.xls',encoding_override='latin-1')  
    log = [] 
    txt = '' 
    for s in wb.sheets():   
     for row in range(s.nrows):    
      values = [] 
      for col in range(s.ncols): 
       #next line is changed 
       txt = sheet.cell(row,col).value 
       txt.replace('-',' ',10) 
       log.append(txt) 
    return log    

x = grabexcelfile() 
print type(x[0]),x[0] 
0

試試這個。

import unicodedata 
data = u'L\xc9GENDE' 
unicodedata.normalize('NFKD',data).encode('ascii','ignore') 

你可以參考這裏瞭解更多 - >Convert a Unicode string to a string in Python (containing extra symbols)

+1

這似乎很好,如果我有權訪問python中的字符串'LÉGENDE',但是當我從excel中導入時,我只有'L \ xc9GENDE',我去網站查看文檔,但是我找不到任何東西來幫助我。謝謝 – user3724234 2015-03-03 04:53:38