Как я могу позволить своим входным данным открыть файл данных, а затем заставить его пройти через функцию?

#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')