3 回答
TA贡献2037条经验 获得超6个赞
您可以使用itertools一个小的更改来调整您的代码。文件迭代器生成文本行,并且您希望一行中的每个字符。
的chain类用于通过链接在一起的多个iterables创建一个新的迭代; 它从一个迭代中产生项目,然后从下一个迭代中产生项目,直到所有原始迭代都用完为止。
由于texto它本身是可迭代的(产生str对象),您可以将这些值链接到一个长的“虚拟”中str,从而产生您想要的单个字符。
from itertools import chain
texto = open('teste.txt','r')
ocorrencias = [0] * 26 # You still need 26 slots, even if they are indexed 0 to 25
ord_a = ord("a")
for caracter in chain.from_iterable(texto):
if caracter >= 'a' and caracter <= 'z':
ocorrencias[ord(caracter) - ord_a] += 1
TA贡献1829条经验 获得超4个赞
texto = open('teste.txt','r')
ocorrencias = [0] * 26
ord_a = ord("a")
for caracter in texto:
for c in caracter:
if c >= 'a' and c <= 'z':
ocorrencias[ord(c) - ord_a] += 1
print(ocorrencias)
texto.close()
TA贡献1875条经验 获得超5个赞
您可以通过在单词上使用附加循环来实现它
texto = open('teste.txt','r')
ocorrencias = [0] * 26
ord_a = ord("a")
for words in texto:
for character in words:
if character >= 'a' and character <= 'z':
ocorrencias[ord(character) - ord_a] += 1
添加回答
举报