Python:匹配字符串中的整个单词,并按找到的顺序附加到列表中

时间:2013-07-23 13:27:39

标签: python regex string search match

真的需要一些帮助 -

我有一个清单:

mylist = "Cell Contents (Column Percentage, Counts, Statistical Test Results), Statistics (Overlap)"

我想在mylist中找到以下单词:

'Statistical Test Results'
'Counts'
'Column Percentage'

一旦找到,我想按照它们出现在mylist中的顺序将这些单词附加到新列表中。所以新列表应该是:

newlist = ['Column Percentage','Counts','Statistical Test Results']

我知道如何找到一个单词并使用for循环将其附加到新列表但是我不太确定如何找到多个单词并按照它们在原始列表中找到的顺序附加它们。

谢谢!

1 个答案:

答案 0 :(得分:2)

我匹配第一对括号之间的内容:

re.finditer(r'\((.*?)\)', mylist).next().groups()[0].split(', ')
['Column Percentage', 'Counts', 'Statistical Test Results']

re.finditera regular expression search

  • 第一个参数是模式:它告诉在括号中搜索第一个项目
  • 注意使用?内部使其非贪婪,以避免匹配太大...要理解,删除它并测试
  • 我们想要捕获括号内的表达式,这就是为什么我们在模式中有...括号。请注意字符串中匹配的转义括号\(\)之间的差异,以及未转义的捕获的()

finditer返回一个迭代器,它只有在我们使用next运行后才有效。现在我们想要获取字符串的捕获部分:这是groups方法([0]以获得第一个和唯一一个,但您可以使用正则表达式捕获多个部分。)

然后我们只是用昏迷来分割结果,我们就完成了!