元文计数器在文本文件中

时间:2014-09-09 04:48:59

标签: python-3.x

import sys
import string
from collections import Counter
vowels = "aeiouy"
try:
    in_file = open("Vowels.txt","r")
    count = {x:sum([1 for char in vowels if char==x])for x in 'aeiouy'}
    print(count)

except FileNotFoundError:
        print("The text file is not found")
        sys.exit(1)
in_file.close()

在我的文件中,我有密西西比州,加利福尼亚州,威斯康星州的字样,我想要做的是计算每个元音中有多少元音并输出,但每次我为每个元音得到1,输出每次都会改变时间如下: {'a':1,'你':1,'o':1,'y':1,'i':1,'e':1}

{'o':1,'y':1,'e':1,'a':1,'i':1,'u':1}

1 个答案:

答案 0 :(得分:2)

替换

count = {x:sum([1 for char in vowels if char==x])for x in 'aeiouy'}

txt = in_file.read()
count = {x:sum([1 for char in txt if char==x])for x in 'aeiouy'}

第一行是实际读取文件的内容。第二行非常类似于你的行,除了txt的存在。

将所有内容放在一起并使用python的with功能:

try:
    with open("Vowels.txt","r") as in_file:
        txt = in_file.read()
        count = {x:sum([1 for char in txt if char==x])for x in 'aeiouy'}
        print(count)
except IOError:
        print("The text file is not found")
        sys.exit(1)

对于您的样本输入,输出为:

{'a': 2, 'e': 0, 'i': 8, 'o': 2, 'u': 0, 'y': 0}

与上述相似但订购

字典无序。如果您想要一个有序列表,请在以下行中替换:

 count = [ [x,sum([1 for char in txt if char==x])] for x in 'aeiouy']

通过上述内容,输出是一个列表列表:

[['a', 2], ['e', 0], ['i', 8], ['o', 2], ['u', 0], ['y', 0]]

列表保留其订单。