#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. Если вам это нравится, пожалуйста, примите это как ответ.