2011-12-04 65 views
0

我想知道,xlrd的結果格式。Python Xlrd結果格式

看到代碼

>>> sh.cell_value(rowx=2, colx=1) 
u'Adam Gilchrist xxxxxxxxxxxxxxxxxxxxx' 

現在,當我嘗試運行res.search

>>> temp1=sh.cell_value(rowx=2, colx=1) 
>>> x=re.search("Adam",'temp1') 
>>> x.group() 

Traceback (most recent call last): 
    File "<pyshell#58>", line 1, in <module> 
    x.group() 
AttributeError: 'NoneType' object has no attribute 'group' 

我什麼也沒得到。

  1. 首先,我想知道,結果是'u'是什麼。
  2. sh.cell_value返回的結果格式是什麼。它是整數,字符串等
  3. 我們可以在它們上運行正則表達式嗎?

回答

1

回答你的問題第一

  1. 首先,我想知道,什麼是 'U' 有結果?你是unicode字符串的限定符。所以u'Adam Gilchrist xxxxxxxxxxxxxxxxxxxxx'意味着unicode中的測試。
  2. sh.cell_value返回的結果格式是什麼。它是整數,字符串等?它的Unicode字符串
  3. 我們可以在其上運行正則表達式嗎?當然可以,這是你怎麼做
temp1=u'Adam Gilchrist xxxxxxxxxxxxxxxxxxxxx' 
x=re.search(u'Adam',temp1)  
x.group()  
u'Adam' 

它只是你也必須指定使用Unicode模式。

+0

我的實現使用Unicode和普通字符串。 –

+0

+1這是最好的答案。 –

1
  1. 這是一個Unicode字符串
  2. CELL_VALUE返回單元格的值。該類型取決於單元格的類型。
  3. 是的。您可以在Unicode字符串上使用正則表達式,但代碼不正確。

您的代碼將「temp1」作爲字符串傳遞給re.search。它不會傳遞變量temp1。你想:

>>> x=re.search(u"Adam",temp1) 
+0

你的權利。我已經糾正了錯誤,並且我必須將temp1轉換爲str(temp),以便re.search成功搜索。多謝,夥計 。 –

+0

不客氣。要接受答案,應該有一個複選標記。在此之前,所以將其列爲沒有被接受的答案。 –

+0

-1 @CarlF .:對不起,只有當模式只包含ASCII時,你的實現才「有效」。你有unicode數據,使用unicode模式。 –