Python 计算以www开头的字符串的所有唯一实例
我是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。 您可以使用字典以字符串作为键,并将计数存储为值。如果再次遇到相同的字符串,
www_1.youtube.com
www_1.youtube.com
www_3.google.com
www_1.youtube.com
预期产出:
www_1.youtube.com-3www_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作为键,而不是整个urlUsec=c.split('.')[0]
在之后如果re.match(^www',c):
Counter({'www_1': 3, 'www_3': 1})