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}
答案 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]]
列表保留其订单。