我有一个Python脚本打印出一个随机生成的密码,然后打印将其打印到文本文件,每次调用时都添加一个新行。例如:
PSWD = (str(pswd01)) + (str(pswd02)) + (str(pswd03)) + (str(pswd04))
# Note, variables pswd01, pswd02 etc are randomly created earier in the script.
print(PSWD)
with open('PSWD_output.txt','a') as f:
f.write(PSWD + '\n')
f.close()
注意,变量PSWD包含小写,大写和数字。
然后我想读取文件并计算单个字符的数量,并将报告打印到不同的文本文件,但不知道我该怎么做。我问了一个类似的问题here,它回答了如何将字符报告打印到控制台。
我知道如何读取PSWD_output.txt,并计算每个不同的字符,将结果写入单独的文本文件?
任何帮助表示赞赏!
答案 0 :(得分:3)
使用字典计算字符重复次数如下:
my_dictionary = {}
f = open('PSWD_output.txt','r')
line = f.readline()
while(line):
for letter in line:
if letter in my_dictionary:
my_dictionary[letter] +=1
else:
my_dictionary[letter] = 1
line = f.readline()
print my_dictionary
对于包含以下内容的文本文件
salam
asjf
asjg;
asdkj
14kj'asdf
5
返回:
>>> ================================ RESTART ================================
>>>
{'a': 6, 'j': 4, 'd': 2, 'g': 1, 'f': 2, 'k': 2, '\n': 6, 'm': 1, 'l': 1, "'": 1, '1': 1, 's': 5, '5': 1, '4': 1, ';': 1}
>>>
答案 1 :(得分:2)
您可以使用Counter。它需要一个可迭代的(并且字符串是可迭代的:迭代字符)并将结果存储为字典
>>> from collections import Counter
>>> c = Counter("foobarbaz")
>>> c
Counter({'o': 2, 'a': 2, 'b': 2, 'z': 1, 'f': 1, 'r': 1})
>>> c.most_common(2)
[('o', 2), ('a', 2)]