2017-05-01 84 views
2

如果我有一个包含格式化像< @tag标签>如字符串的字符串创建列表:的Python:从包含标签

文本=“在这个测试中,我标记< @bill>,< @詹妮弗>,最后< @bob>。“

我该如何获取为迭代标签而提取的标签的python列表。

[“法案”,“珍”,“鲍勃”]

虽然这将是具体应用到松弛Chatops博特我的工作,我把它通用,因为它可能是其他有用的的东西。我没有在如何为一个体面的谷歌搜索来解决这个问题,并在堆栈交易所提出的问题在这个已经不碰..

谢谢! 尼克

回答

4

您可以使用正则表达式:

import re 
text = "In this test I tag <@bill>, <@Jennifer>, and lastly <@bob>." 
print(re.findall('<@(.+?)>', text)) # ['bill', 'Jennifer', 'bob'] 

基本解释:

  • ()表示捕获组,即 '对我来说提取这部分'
  • .手段“的任何字符“
  • .+手段‘任意字符一次或多次’
  • .+?意思是“任意字符一次或多次,但尽可能少”,否则将包括之后的>,还有更多的字符:

print(re.findall('<@(.+)>', text)) # ['bill>, <@Jennifer>, and lastly <@bob']

+0

这是确切的答案我即将发布。猜猜我还不够快,与专业人士竞争。 –

+0

这个工作最好在我的情况,我不好意思不思或“重新”已经因为它是在我对其他事情的代码使用,所以我标记这是我的答案。谢谢! 。 –