Python脚本更新:统计列表中唯一单词在文本行的出现次数总和
解决思路与代码修改
我明白你要做的改动了——原来的脚本只要目标列表里的任意人员出现在行内,就写入1标记存在性,现在需要统计这些人员在该行的总出现次数(包括同一人多次出现的情况)对吧?
先分析下原代码的问题:原逻辑是遍历到第一个匹配的staff就写入1并break,所以只会记录「是否存在」,而不会统计次数,更不会累加多个人员的出现次数。
下面是修改后的代码片段,替换你原来的循环部分即可:
elif 'SCHOOL' in line: csvfile.write(str(line.count(',') + 1) + ',') # 初始化总次数为0 total_occurrences = 0 # 遍历所有目标人员,累加每个人的出现次数 for staff in ess: total_occurrences += line.count(staff) # 将总次数写入csv csvfile.write(str(total_occurrences)) # 原来的flag和break逻辑可以完全删掉了
改动说明:
- 去掉了
flag变量和break语句:现在需要遍历所有ess里的人员,不能找到第一个匹配项就停止 - 新增
total_occurrences变量:用来累加每个目标人员在当前行的出现次数 - 最终写入总次数的字符串形式:比如行内是
"jim,jim,bob,alice",ess里的jim出现2次、bob出现1次,总次数就是3,脚本会写入3;如果没有任何目标人员出现,就写入0
举个实际例子验证:
假设line = "SCHOOL,jim,jim,bob,sally,tom,tom",ess = ['jim','bob','sally','tom']
jim出现2次,bob1次,sally1次,tom2次- 总次数就是2+1+1+2=6,脚本会写入
6
内容的提问来源于stack exchange,提问作者gis4me
相关产品推荐
相关产品推荐

