如何从字符串中提取主题标签?

How can I extract hashtags from string?

我需要从接收字符串的函数中提取“#”。 这是我所做的:

def hashtag(str):
lst = []
for i in str.split():
    if i[0] == "#":
        lst.append(i[1:])
return lst

我的代码确实有效,但它会拆分单词。因此对于示例字符串:"Python is #great #Computer#Science" 它将 return 列表:['great', 'Computer#Science'] 而不是 ['great', 'Computer', 'Science'].

请不要使用 RegEx。

您可以先尝试找到 # 出现的第一个索引,然后在 #

上拆分切片
text = 'Python is #great #Computer#Science'
text[text.find('#')+1:].split('#')
Out[214]: ['great ', 'Computer', 'Science']

你甚至可以用strip最后去掉不需要的白色space。

[tag.strip() for tag in text[text.find('#')+1:].split('#')]
Out[215]: ['great', 'Computer', 'Science']
  1. 除以 #
  2. 拿走除第一个以外的所有标记
  3. 剥离空格
s = "Python is #great #Computer#Science"
out = [w.split()[0] for w in s.split('#')[1:]]
out
['great', 'Computer', 'Science']

拆分成单词,然后过滤以 octothorpe(哈希)开头的单词。

[word for word in str.replace("#", " #").split()
    if word.startswith('#')
]

步骤是

  • 在每个散列前面插入一个 space,以确保我们将它们分开
  • 在 spaces
  • 处拆分字符串
  • 保留以哈希开头的单词。

结果:

['#great', '#Computer', '#Science']

当您使用默认分隔符 (space) 拆分字符串时,您会得到以下结果:

['Python', 'is', '#great', '#Computer#Science']

您可以在拆分前进行替换(在主题标签前添加 space)

def hashtag(str):
    lst = []
    str = str.replace('#', ' #')
    for i in str.split():
        if i[0] == "#":
            lst.append(i[1:])
    return lst