“ ord()需要一个字符,但字符串长度为15 ...”

时间:2019-04-09 16:19:44

标签: python python-3.x

我需要知道每个字母在一个句子中出现多少次。但是,它给出了一个错误“ 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

3 个答案:

答案 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