2015-11-02 41 views
1

我想讀取excel文件並提取一些關於某些人的信息。python在excel中搜索俄語子串

下面是我在做什麼

import xlrd 
dir = './schfiles'; 
files = os.listdir(dir); 
f = files[0]; 
book = xlrd.open_workbook(dir+"/"+files[0]); 
sh = book.sheet_by_index(0) 
t = sh.cell_value(rowx=xlr2i(35),colx=xlc2i('F')) 
t.find(u"Усманов") 

寫入變種t時的字符串爲u'\ u0434 \ u043e \ u0446。 \ u0423 \ u0441 \ u043c \ u0430 \ u043d \ u043e \ u0432 \ u0411。\ u0428。'看起來像「доц。УсмановБ.Ш.」

U 「Усманов」 被表示爲u '\ XD3 \ XF1 \ XEC \ xe0 \固定的\ XEE \ XE2'

我試圖兩個串編碼爲 'UTF8',解碼它們,使用外部庫,但沒有幫助。

有誰知道怎麼可能在這裏找到一個特定的子串?

回答

0

使用# -*- coding: utf-8 -*-作爲腳本的第一行來告訴intepreter您正在使用哪種編碼。

# -*- coding: utf-8 -*- 

import os 
import xlrd 

dir = './schfiles' 
files = os.listdir(dir) 
f = files[0] 

workbook_path = os.path.join(dir, files[0]) 
book = xlrd.open_workbook(workbook_path) 

sh = book.sheet_by_index(0) 
t = sh.cell_value(rowx=xlr2i(35),colx=xlc2i('F')) 
t.find(u"Усманов") 
+0

那麼,我怎麼知道我應該使用什麼編碼? –

+0

對非ASCII字符使用'utf-8',Python 2.x使用'ASCII'作爲默認編碼。 – dm295

+2

@PheuVerg,明確地說,'#coding:utf8'聲明瞭*源文件*的編碼。 't.find(u'Усманов')'應該是一個Unicode字符串,並確保將源文件保存在聲明的編碼中。然後,Python將知道如何正確構建Unicode字符串。您可以對源文件使用任何編碼,以便正確表示您的語言,但聲明的編碼和實際保存的編碼必須一致。 –