【问题标题】:Python - Ready text file and report count of individual charactersPython - 读取文本文件并报告单个字符的计数
【发布时间】:2016-04-22 03:20:16
【问题描述】:

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

任何帮助表示赞赏!

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    使用字典计算重复字符如下:

    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}
    >>> 
    

    【讨论】:

    • 这正是我想要的,非常感谢!我现在将此字典保存到单独的输出文件中,但希望它采用更用户友好的格式。无论如何在打印/写入文件之前格式化字典?或者,我的另一个选择是再次读取文件(在向其写入字典之后)并尝试以这种方式对其进行格式化,但不确定该怎么做。有任何想法吗?谢谢!
    【解决方案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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      相关资源
      最近更新 更多