#python #list #file
Вопрос:
Поэтому я изначально создал эту функцию, которая будет возвращать » » за количество возвращений каждой буквы в строке… и вот мой код…
def letterhelper(filename): r = list(filename) c_r = set(r) c_r.remove(' ') c_r.remove(',') c_r.remove('.') f = [] for x in c_r: f.append([-r.count(x), x]) return f def charHistogram(filename: str): g = letterhelper(str.lower(filename)) for t in sorted(g): print(t[1], (-t[0]) * ' ') print(charHistogram(filename='Lorem ipsum dolor sit amet, consectetur adipiscing ' 'elit. Praesent ac sem lorem. Integer elementum ' 'ultrices purus, sit amet malesuada tortor' 'pharetra ac. Vestibulum sapien nibh, dapibus' 'nec bibendum sit amet, sodales id justo.'))
и вот мой результат…
e t s i a m r u l n o c d p b g h j v None
Однако сейчас я пытаюсь взять файл и открыть его, а затем запустить charHistogram(filename)
его, например, файл с именем data.txt содержит следующий текст
data.txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac sem lorem. Integer elementum ultrices purus, sit amet malesuada tortor pharetra ac. Vestibulum sapien nibh, dapibus nec bibendum sit amet, sodales id justo.'
Я пытаюсь изменить свой код так, чтобы он принимал файлы и возвращал тот же вывод, что и раньше. Исходя из моих знаний о файлах и их открытии, я пытался это сделать…
def letterhelper(filename): r = list(filename) c_r = set(r) c_r.remove(' ') c_r.remove(',') c_r.remove('.') f = [] for x in c_r: f.append([-r.count(x), x]) return f def charHistogram(filename): r = open(filename) q = r.read() g = letterhelper(str.lower(q)) for t in sorted(g): print(t[1], (-t[0]) * ' ') print(charHistogram('data'))
но теперь мой вывод возвращает это…
e t s i a m r u l n o c d p b g h j v None
что отличается от моего первоначального вывода… что я делаю не так и что я должен здесь изменить??
Ответ №1:
Похоже, что ваш файл данных содержит новые строки. Вот почему существует новый символ ( n
), подсчитанный (4 раза). Вы могли бы удалить его в letterHelper
: c_r.remove('n')