在python中迭代字符串列表

在python中迭代字符串列表,python,loops,findall,Python,Loops,Findall,我正试图建立一个数据集,检查在文章列表中提到几个不同名字的频率。因此,对于每一篇文章,我想知道nameA、nameB等被提及的频率。然而,我在迭代列表时遇到了麻烦 我的代码如下: for element in list_of_names: for i in list_of_articles: list_of_namecounts = len(re.findall(element, i)) 名称列表=包含多个名称的字符串[nameA nameB nameC] list_of_articl

我正试图建立一个数据集,检查在文章列表中提到几个不同名字的频率。因此,对于每一篇文章,我想知道nameA、nameB等被提及的频率。然而,我在迭代列表时遇到了麻烦

我的代码如下:

for element in list_of_names:
for i in list_of_articles:
    list_of_namecounts = len(re.findall(element, i))
  • 名称列表=包含多个名称的字符串[nameA nameB nameC]
  • list_of_articles=包含40.000个字符串的列表,这些字符串都是文章
  • 文章列表中的文章示例:

  • 索引:1
  • 类型:str
  • 尺码:阿姆斯特丹-德金融家酒店
  • 我得到的错误是:应为字符串或缓冲区

    我认为当迭代字符串列表时,re.findall命令应该使用这样的列表工作,但对Python来说也是相当陌生的。你知道怎么解决我的问题吗


    谢谢大家!

    如果您的列表是['apple'、'apple'、'banana'],并且您希望得到结果:number of apple=2,那么:

    from collections import Counter
    
    list_count = Counter(list_of_articles)
    
    for element in list_of_names:
        list_of_namecounts = list_count[element]
    
    假设名字计数列表是一个列表

    list_of_namecounts = []
    for element in list_of_names:
        list_of_namecounts.append(list_count[element])
    

    re
    代表正则表达式。您没有使用正则表达式。您正在寻找
    过滤器
    。元素是什么类型的?我是什么类型的?你能给我们一部分文章列表吗?没有理由为每个名字重建计数器。构造函数应该在循环之外。修复了,太快:)谢谢Patrick Haugh和EmilioK。我尝试了这个命令,但它给了我一个总的提及次数,而不是每篇文章的次数。对吗?如果是这样,我可以修改代码以获得文章列表中每个字符串(=文章)的计数吗?你的意思是在“苹果派与苹果”中,苹果应该返回2吗?@EmilioK是的