【发布时间】:2020-07-18 00:30:14
【问题描述】:
我是 python 初学者。对于一个练习,我必须编写一个 python 函数来扫描字符串列表,计算主题标签出现的次数并将其放入字典中。示例:
[
"hi #weekend",
"good morning #zurich #limmat",
"spend my #weekend in #zurich",
"#zurich <3"
]
分析这个列表后,函数应该返回:
{'weekend': 2, 'zurich': 3, 'limmat': 1}
只允许使用字母和数字,其他任何内容,如空格和句点,都可以结束标签。
我们可以假设参数始终是一个有效的字符串列表,您不需要提供任何类型的输入验证。
标签是针对特定情况的。 #ZURICH 应被视为与 #zurich 不同的主题标签。
我有一个丑陋的函数初稿,如果字符串中有多个主题标签,它就不起作用,因为它会跳过第二个。我不一定需要关于如何简化函数或使其更 Pythonic 的提示(当然它仍然会受到赞赏)。我只是想知道为什么它不起作用。
def analyze(posts):
hashtag_dict = {}
for post_string in posts:
for char in post_string:
if char == "#":
hash_index = post_string.find(char)
counter = 1
tag = ""
for tag_char in post_string[hash_index + 1:]:
if tag_char.isdigit() or tag_char.isalpha():
tag += tag_char
elif tag in hashtag_dict:
counter += 1
hashtag_dict[tag] = counter
break
else:
hashtag_dict[tag] = counter
break
return hashtag_dict
posts = [
"hi #weekend",
"good morning #zurich #limmat",
"spend my #weekend in #zurich",
"#zurich <3"]
print(analyze(posts))
任何帮助将不胜感激!
【问题讨论】:
-
尝试阅读
regular expressions。我认为只需几行代码就可以解决您的问题。 -
这个正则表达式会找到你的标签值,然后你可以计算它们
\#([^ ]+),因为会发现“除了空格之外的任何东西”
标签: python