我正在寻找一种干净的方法来获取给定字符串中以#
开头的一组单词(列表,数组等)。
在C#中,我会写
var hashtags = input
.Split (' ')
.Where (s => s[0] == '#')
.Select (s => s.Substring (1))
.Distinct ();
在Python中执行此操作的相对比较优雅的代码是什么?
编辑
输入样例:
"Hey guys! #stackoverflow really #rocks #rocks #announcement"
预期输出:["stackoverflow", "rocks", "announcement"]
最佳答案
使用@inspectorG4dget's answer,如果您不希望重复,则可以使用set comprehensions而不是list comprehensions。
>>> tags="Hey guys! #stackoverflow really #rocks #rocks #announcement"
>>> {tag.strip("#") for tag in tags.split() if tag.startswith("#")}
set(['announcement', 'rocks', 'stackoverflow'])
请注意,用于集合理解的
{ }
语法仅从Python 2.7开始有效。如果您使用的是较旧的版本,则提要列表理解(
[ ]
)输出到set
的功能为suggested by @Bertrand。