2015-02-11 46 views
1

我在Windows 7中使用python 3.4。我有excel工作表中的數據存在於每個單元格中。 的數據是不同的種。二例子: - "Qwert A_B_C_1 uiop""Qwert A_X_Y_Z uiop"使用正則表達式獲取多個關鍵字使用python 3.4

綜上所述我有以提取被寫入在其中CAPS只是第一個字後下劃線存在關鍵字。一旦空白遇到

我已經試過這樣的事情,但

x = "QWERT A_B_C_1 UIOP" 
se = re.findall("[A-Z]+_[A-Z]+_[A-Z]+_[0-9A-Z]+",x) 

但它不與不同類型的關鍵字工作的提取應停止。

+0

什麼是預期產出 – vks 2015-02-11 08:41:12

+0

它的工作原理;應該打印'A_B_C_1'。有什麼問題? – Maroun 2015-02-11 08:42:46

+0

@Maroun Maroun - 如果我不知道A_之後有多少單詞和下劃線,那該怎麼辦?我怎樣才能讀整個關鍵字,直到遇到空白。 – Maxxie 2015-02-11 08:47:01

回答

1
[A-Z]+(?:_[A-Z]+)*_[A-Z0-9]+ 

您可以使用它來捕獲之間的變量_[A-Z]See demo

import re 
p = re.compile(r'[A-Z]+(?:_[A-Z]+)*_[A-Z0-9]+') 
test_str = "QWERT A_B_C_1 UIOP\nQwert A_X_Y_Z uiop" 

re.findall(p, test_str) 
+0

thnx很多@vks – Maxxie 2015-02-11 09:00:50

+0

@Maxxie很高興它的工作 – vks 2015-02-11 09:01:33

0

我探索更多的選擇,並與

LST上來= re.findall( '\ S + _ \ S +',test_str)

按預期工作.....

+0

這將匹配'!@#!@ @#_ !@ #####!@#'就是這樣.Iw不會匹配'A_B_C_D'.it會將它作爲破碎元素的列表 – vks 2015-02-11 09:21:14

相關問題