Python 项目赢得';t在一个文件中不能正确地打印出字母数
我正在制作一个程序,读取一个文件,并打印出它包含的每个字母的数量(如果有的话)。如果文件中包含“hello world”,我希望它是打印1h、1e、3l、2o、1w、1r、1l等。这不是一个工作项目或任何东西,我是出于兴趣才这样做的。我似乎找不到这样的示例代码,这就是为什么我想在这里问:)想知道我的代码应该是什么样子Python 项目赢得';t在一个文件中不能正确地打印出字母数,python,file-io,count,word,Python,File Io,Count,Word,我正在制作一个程序,读取一个文件,并打印出它包含的每个字母的数量(如果有的话)。如果文件中包含“hello world”,我希望它是打印1h、1e、3l、2o、1w、1r、1l等。这不是一个工作项目或任何东西,我是出于兴趣才这样做的。我似乎找不到这样的示例代码,这就是为什么我想在这里问:)想知道我的代码应该是什么样子 a1 = 0 b1 = 0 c1 = 0 d1 = 0 e1 = 0 f1 = 0 g1 = 0 h1 = 0 i1 = 0 j1 = 0 k1 = 0 l1 = 0 m1 = 0
a1 = 0
b1 = 0
c1 = 0
d1 = 0
e1 = 0
f1 = 0
g1 = 0
h1 = 0
i1 = 0
j1 = 0
k1 = 0
l1 = 0
m1 = 0
n1 = 0
o1 = 0
p1 = 0
q1 = 0
r1 = 0
s1 = 0
t1 = 0
u1 = 0
v1 = 0
w1 = 0
x1 = 0
y1 = 0
z1 = 0
with open("song.txt") as f:
for line in f:
if line == "a" or line == "A":
a1 = a1 + 1
if line == "b" or line == "B":
b1 - b1 + 1
if line == "c" or line == "C":
c1 = c1 + 1
if line == "d" or line == "D":
d1 = d + 1
if line == "e" or line == "e":
e1 = e1 + 1
if line == "f" or line == "F":
f1 = f1 + 1
if line == "g" or line == "G":
g1 = g1 + 1
if line == "h" or line == "H":
h1 = h1 + 1
if line == "i" or line == "I":
i1 = i1 + 1
if line == "j" or line == "J":
j1 = j1 + 1
if line == "k" or line == "K":
k1 = k1 + 1
if line == "l" or line == "L":
l1 = l1 + 1
if line == "m" or line == "M":
m1 = m1 + 1
if line == "n" or line == "N":
n1 = n1 + 1
if line == "o" or line == "O":
o1 = o1 + 1
if line == "P" or line == "p":
p1 = p1 + 1
if line == "q" or line == "Q":
q1 = q1 + 1
if line == "r" or line == "R":
r1 = r1 + 1
if line == "S" or line == "s":
s1 = s1 + 1
if line == "T" or line == "t":
t1 = t1 + 1
if line == "u" or line == "U":
u1 = u1 + 1
if line == "v" or line == "V":
v1 = v1 + 1
if line == "w" or line == "W":
w1 = w1 + 1
if line == "x" or line == "X":
x1 = x1 + 1
if line == "y" or line == "Y":
y1 = y1 + 1
if line == "z" or line == "Z":
z1 = z1 + 1fwef
print(a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1,y1,z1)
这将:
- 以小写字符形式读取整个文件
- 提取列表中的所有字符并按字母数字排序
- 打印每个字符及其出现次数
from collections import Counter with open('song.txt') as f: count = Counter(f.read().lower()) keys = list(count) keys.sort() for x in keys: print '{0}: {1} times'.format(x, count[x])
- 以小写字符形式读取整个文件
- 提取列表中的所有字符并按字母数字排序
- 打印每个字符及其出现次数
from collections import Counter with open('song.txt') as f: count = Counter(f.read().lower()) keys = list(count) keys.sort() for x in keys: print '{0}: {1} times'.format(x, count[x])
- 这将:
- 试试这个。。。这将分别计算大写字母和小写字母
import string
fp=open('song.txt','r')
file_list=fp.readlines()
freqs = {}
for line in file_list:
for char in line:
line=filter(lambda x:x in strings.letters, line.lower())
if char in freqs:
freqs[char] += 1
else:
freqs[char] = 1
for item in freqs:
print item, freqs[item]
或者将for循环后的行转换为小写字母。试试这个。。。这将分别计算大写字母和小写字母
import string
fp=open('song.txt','r')
file_list=fp.readlines()
freqs = {}
for line in file_list:
for char in line:
line=filter(lambda x:x in strings.letters, line.lower())
if char in freqs:
freqs[char] += 1
else:
freqs[char] = 1
for item in freqs:
print item, freqs[item]
或者将for循环后的行仅转换为小写字母。您的方法可能需要进行一些修改,但它确实很难处理(更不用说容易出错)。您可能想做的是使用一个称为字典的Python数据结构,它将键(字母)与值(计数)关联起来。所以你可以做一些类似的事情:
import string
fp=open('song.txt','r')
file_list=fp.readlines()
freqs = {}
for line in file_list:
for char in line:
line=filter(lambda x:x in strings.letters, line.lower())
if char in freqs:
freqs[char] += 1
else:
freqs[char] = 1
for item in freqs:
print item, freqs[item]
letters = {}
with open("song.txt") as f:
for c in f.read():
c = c.lower()
if "a" <= c <= "z":
if c not in letters:
letters[c] = 0
letters[c] += 1
for c, n in sorted(letters.items()):
print("{0}{1}".format(c, n))
letters={}
将open(“song.txt”)作为f:
对于f.read()中的c:
c=c.下()
如果“a”,您的方法可能只需稍加修改即可工作,但它确实很难处理(更不用说容易出错)。您可能想做的是使用一个称为字典的Python数据结构,它将键(字母)与值(计数)关联起来。所以你可以做一些类似的事情:
letters = {}
with open("song.txt") as f:
for c in f.read():
c = c.lower()
if "a" <= c <= "z":
if c not in letters:
letters[c] = 0
letters[c] += 1
for c, n in sorted(letters.items()):
print("{0}{1}".format(c, n))
letters={}
将open(“song.txt”)作为f:
对于f.read()中的c:
c=c.下()
如果“a”,我如何让它在一行上打印每个输入,比如a1 b2 C5是的,感谢它工作,除了我希望它按字母顺序打印外,这可能吗?既然字典是按随机顺序排列的,我怎么才能让它在一行上打印每一个输入,比如a1 b2 C5是的,感谢它工作了,除了我想让它按字母顺序打印外,这可能吗?因为字典是按随机顺序排列的嘿,阿波娃,这似乎起到了作用,除了我没有;我不知道如何将每个字母打印在一行上,所以第一行会说“a1”,第二行会说“b3”等等。嘿,阿波娃,这似乎很管用,除了我不知道;I don’我不知道如何将每个字母打印在唯一的一行上,所以第一行会说“a1”,第二行会说“b3”,等等。嘿,那一行很好用。我仍然在为我的个人项目寻找更多的方法,谢谢!嘿,那一个很好用。我仍然在为我的个人项目寻找更多的方法,谢谢!