Python 计算以www开头的字符串的所有唯一实例

Python 计算以www开头的字符串的所有唯一实例,python,regex,Python,Regex,我是Python新手。我正试图编写一个脚本,浏览一个文件,并统计以www开头的字符串的所有唯一出现次数 例如,假设我的文件 www_1.youtube.com www_1.youtube.com www_3.google.com www_1.youtube.com 预期产出: www_1.youtube.com-3 www_3.google.com-1假设您的文件名为file1。 您可以使用字典以字符串作为键,并将计数存储为值。如果再次遇到相同的字符串,

我是Python新手。我正试图编写一个脚本,浏览一个文件,并统计以www开头的字符串的所有唯一出现次数

例如,假设我的文件

www_1.youtube.com      
www_1.youtube.com      
www_3.google.com    
www_1.youtube.com    
预期产出:

www_1.youtube.com-3

www_3.google.com-1

假设您的文件名为file1。 您可以使用字典以字符串作为键,并将计数存储为值。如果再次遇到相同的字符串,请增加该字符串的值。如果遇到新字符串,请将该字符串作为新键添加到字典中,并将其值设置为1。这是一种方法。可能不是最好的

import re
file1 = "abc.txt"

with open(file1) as f:
    content = f.read()

content = content.split('\n') #split content into lines

count = dict()
for c in content:
    if re.match('^www', c):  #check if string starts with 'www'
        if c in count:
            count[c] += 1  #update existing string key
        else:
            count[c] = 1   #add new string key

print count
输出:

{'www_1.youtube.com': 3, 'www_3.google.com': 1}

您可以在列表中获取您的文件内容,每个行都包含元素列表。然后用
startswith
你可以过滤你的选择和
collections。Counter
你可以很容易地找到元素的计数,它将是一个dict

这里有一个尝试:

import collections
with open("file.txt", 'r') as f:
    lines = f.readlines()
    print(collections.Counter([i.strip() for i in lines if i.startswith("www")]))
o/p将类似于:

Counter({'www_1.youtube.com': 3, 'www_3.google.com': 1})

非常简单地将生成器理解输入到
集合。计数器
,计算第一个单词(按点拆分):

结果:

Counter({'www_1': 3, 'www_3': 1})

还有什么我需要的吗。我看到这个错误“AttributeError:“module”对象没有属性“Counter”@DeepG您导入集合了吗?您使用的是python 2.6吗?如果我不想使用整行作为键,即我只想使用www_1作为键,而不是整个urlUse
c=c.split('.')[0]
之后如果re.match(^www',c):
Counter({'www_1': 3, 'www_3': 1})