2013-10-18 38 views
1

有一組字符串的如下如何使用Python腳本

text:u'MUC-EC-099_SC-Memory-01_TC-25' 
text:u'MUC-EC-099_SC-Memory-01_TC-26' 
text:u'MUC-EC-099_SC-Memory-01_TC-27' 

我已經從xls文件提取並轉化爲string這些數據,提取單引號內的字符串 現在我已經提取數據是在單引號內,並把它們放在一個列表中。

預期輸出等預先

[MUC-EC-099_SC-Memory-01_TC-25, MUC-EC-099_SC-Memory-01_TC-26,MUC-EC-099_SC-Memory-01_TC-27] 

感謝。

回答

6

使用re.findall

>>> import re 
>>> strs = """text:u'MUC-EC-099_SC-Memory-01_TC-25' 
text:u'MUC-EC-099_SC-Memory-01_TC-26' 
text:u'MUC-EC-099_SC-Memory-01_TC-27'""" 
>>> re.findall(r"'(.*?)'", strs, re.DOTALL) 
['MUC-EC-099_SC-Memory-01_TC-25', 
'MUC-EC-099_SC-Memory-01_TC-26', 
'MUC-EC-099_SC-Memory-01_TC-27' 
] 
2

可以使用下面的表達式:

(?<=')[^']+(?=') 

此未'''之間包圍零個或多個字符匹配。

Python代碼:

quoted = re.compile("(?<=')[^']+(?=')") 
for value in quoted.findall(str(row[1])): 
    i.append(value) 
    print i 
+0

@ Mr.Calm歡迎您,我會將您的代碼添加到答案中。請不要忘記儘可能接受答案。謝謝 :) –

2

text:前綴似乎有點熟悉。您是否使用xlrd來提取它?在這種情況下,您擁有前綴的原因是因爲您正在獲取包裝的Cell對象,而不是單元格中的值。舉例來說,我認爲你做喜歡

>>> sheet.cell(2,2) 
number:4.0 
>>> sheet.cell(3,3) 
text:u'C' 

收穫的人展開的對象,使用.value

>>> sheet.cell(3,3).value 
u'C' 

(請記住,這裏的u僅僅是告訴你的字符串是unicode,它是不是問題。)