我需要知道每个字母在一个句子中出现多少次。但是,它给出了一个错误“ ord()期望一个字符,但字符串长度为15”(15和我当前文件中包含的字母数量)
texto = open('teste.txt','r')
ocorrencias = [0] * 25
ord_a = ord("a")
for caracter in texto:
if caracter >= 'a' and caracter <= 'z':
ocorrencias[ord(caracter) - ord_a] += 1
答案 0 :(得分:1)
您可以使用itertools
进行一点点改动就可以修改您的代码。文件迭代器生成文本的行,并且您希望一行中的每个字符。
chain
类用于通过将多个可迭代对象链接在一起来创建新的可迭代对象;它从一个可迭代对象中生成项目,然后从下一个迭代对象中生成项目,直到所有原始可迭代对象都用尽。
由于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
答案 1 :(得分:0)
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()
答案 2 :(得分:0)
您可以通过在单词上使用附加循环来实现它
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