Python, Как запретить моему коду показывать положение моего CSV-файла (без Панды)

#python #csv

#питон #csv

Вопрос:

Код, который я написал, дает мне желаемый результат (берет данные из csv-файла), но он показывает положение функции, чего я не хочу.

Вот мой код:

 # Functions import sys from collections import Counter import csv  def NC(filename: list) -gt; str:  print("----")  print("Precondition: You must type the FULL name of the genre with the EXACT same capital/lower case lettering.")  print("----")    x = input("Enter the category of the books: ")    category = []   with open('Google_Books_Dataset.csv', 'r') as csv_file:  csv_reader = csv.DictReader(csv_file)  c = Counter(row['generes'] for row in csv_reader)  result = print(c[x])  category.append(result)  return category  def CA(filename: list) -gt; str:  print("----")  print("Precondition: You must type the author's FULL name with the EXACT same capital/lower case lettering.")  print("----")    x = input("Enter the author's FULL name: ")    author_name = []  with open('Google_Books_Dataset.csv', 'r') as csv_file:  csv_reader = csv.DictReader(csv_file)     for row in csv_reader:  result = {'author': row['author'], 'category': row['generes']}  del result['author']    if (row['author'] in x):  author_name.append(result)  print(list(author_name))  return author_name  def CB(filename: list) -gt; str:  print("----")  print("Precondition: You must type the book's FULL name with the EXACT same capital/lower case lettering and special symbols (e.g. $ or *).")  print("----")    x = input("Enter the book's FULL name: ")    book_name = []  with open('Google_Books_Dataset.csv', 'r') as csv_file:  csv_reader = csv.DictReader(csv_file)     for row in csv_reader:  result = {'title': row['title'], 'category': row['generes']}  del result['title']    if (row['title'] in x):  book_name.append(result)  print(list(book_name))  return book_name  def Q(x: str) -gt; str:  x = input("Enter quit: ")  if (x == "quit"):  print("END")  sys.exit()   # Command Line print("Precondition: ALL commands must be of capital case.") print("----")  x = input("Enter command: ") List = ["NC", "CA", "CB", "Q"]  while (x != List):    if x == List[0]:  name = []  NC(name)  print(NC)    if x == List[1]:   name = []  CA(name)  print(CA)    if x == List[2]:  name = []  CB(name)  print(CB)    if x == List[3]:  name = []  Q(name)  print(Q)  else:  x = input("Enter command: ")  

Все мои функции всегда возвращают позицию функции, я не знаю почему.

Например, если я запущу свой код и введу команду (например, NC), то мой выход будет:

 Precondition: ALL commands must be of capital case. ---- Enter command: NC ---- Precondition: You must type the FULL name of the genre with the EXACT same capital/lower case lettering. ---- Enter the category of the books: Fiction 39 lt;function NC at 0x0000018E43A95670gt; Enter command: ...  

lt;Функция NC в 0x0000018E43A95670gt;lt;функция NC в 0x0000018E43A95670gt; не требуется. И все мои другие коды, кроме команды «Выйти», также выдают позицию. Как мне обойти это?

Комментарии:

1. Ну, а потом убрать бесполезное print(NC) и тому подобное? И вообще, чего ты от этого ожидал?

2. @ThierryLathuille Удалите печать(NC)? , в нижней части? Я довольно новичок в файлах python и csv, поэтому понятия не имею.

3. @CZA, пожалуйста, проверьте обновленный ответ, который я упомянул ниже. Если это решило вашу проблему, пожалуйста, не забудьте проголосовать и принять это как ответ.

4. @CZA Не имеет отношения к вашему вопросу, но ваши CA CB функции и идентичны, за исключением того, что вы меняете местами «автор» и «название». Удалите одну из этих функций и заставьте функцию принимать строковый аргумент.

Ответ №1:

Вы выполняете функцию прямой печати. Просто он печатает адрес. Так что выкидывай print(NC) . Я полагаю, вы пытаетесь напечатать список названий книг. Таким образом, это список строк, которые вам нужно распечатать.

Если вам действительно нужно распечатать книгу, замените print(NC) ее

 nc = NC(name) print(nc)  

Определенно, это сработает. Просто-Напросто 😉

Комментарии:

1. большое спасибо! Я не могу повышать голос, потому что я слишком новичок, но это сработало!

2. Если вам это нравится, пожалуйста, примите это как ответ.