Форум сайта python.su
Очень нужна помощь, два дня ищу не могу найти ответ.
В тексте нужно подсчитать частоту каждой букви.
Большие и маленькие должны подсчитываться как одинаковые, но буквы (è, à, ò, ì, ù ) и ( a, i, o,u,e) как различные.
Я знаю что можно просто подсчитать буквы в цыкле.с
S.lower().count()
Офлайн
s = "JOHASNdcjksdfn vsdfhè, à,ò,ì, ù ваыпы è, à, ò, ì, ùваыпрввYH fvgdfdfghbfghb˙©©¬≥˚∆©ƒ∂˚…hgty©ø˚µ" lower = s.lower() for i in set(lower): print(i, "=", lower.count(i))
Офлайн
Это не будет работать, мой текст в файле, который проходит разкодировку ( думаю utf-8), и все акценты удаляются пр открытии файла.
Но спасибо за попытку
Офлайн
Lena13_08
давайте сюда файл
Офлайн
Я прикрепила пример файла который нам дали для теста нашей программы. Не хочу казаться лентяйкой поэтому обьясняю: программу я уже написала она 1)читает из командной строки файлы(их несколько) и разбивает его на отдельные буквы, подсчитывает их 2) отдельная функция потом считает расстояние между векторами *которые и хранят эти частоты.
Файл я отрывала так(должен открываться через командную строку, так как будет тестироваться преподом на его файлах):
files = []
for f in sys.argv[1:]:
files.append((open(f, 'rt')).read().splitlines())
for _ in range(len(files)):
files[_] = list(files[_][0].lower())
Отредактировано Lena13_08 (Ноя. 1, 2017 10:39:55)
Прикреплённый файлы: text1.txt (17 байт)
Офлайн
Lena13_08это не utf-8
думаю utf-8
Офлайн
d = {} with open("text1.txt", encoding="windows-1251") as f: for i in f.read(): d.setdefault(i, 0) d[i] += 1 print(d)
Офлайн
FishHookпопробовала не работает: читает à как а
Отредактировано Lena13_08 (Ноя. 1, 2017 11:13:44)
Офлайн
Lena13_08
А как вы узнали, что там есть символ à? Вы же не знаете в какой кодировке файл.
Офлайн
Офлайн