Python - 就绪文本文件和单个字符的报告计数

时间:2016-04-21 19:13:29

标签: python python-3.x

我有一个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,并计算每个不同的字符,将结果写入单独的文本文件?

任何帮助表示赞赏!

2 个答案:

答案 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)]