为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2022-01-05 10:42:37
我需要知道每个字母在一个句子中出现多少次。但是,它给出了一个错误“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 回答

?
阿晨1998

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


查看完整回答
反对 回复 2022-01-05
?
浮云间

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()


查看完整回答
反对 回复 2022-01-05
?
慕田峪4524236

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


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信