Мне нужно знать, сколько раз каждая буква встречается в предложении. Однако выдает ошибку "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
Итераторы файлов дают линии, а не отдельные символы/байты.






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()
Проверьте сейчас, я обновил размер списка занятий.
Вы можете добиться этого, используя дополнительный цикл над словами
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
Вы можете использовать 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
вы пытаетесь заказать слово, добавьте еще один цикл for. (распечатать символ для отладки)