2015-02-11 137 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