2017-05-01 82 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

這個工作最好在我的情況,我不好意思不思或「重新」已經因爲它是在我對其他事情的代碼使用,所以我標記這是我的答案。謝謝! 。 –