Мне было поручено создать программу на Python, которая ищет файл CSV; список научных работ (автор, год, название, журнал - это фактически TSV).Python - изменение вывода при запросе моего CSV-файла
С моим текущим кодом я могу добиться правильного вывода (как в правильной информации), но он не отформатирован правильно.
Что я получаю, это;
['Albers; Bergman', '1995', 'The audible Web', 'Proc. ACM CHI ']
Где мне нужен этот формат;
Автор/с. (Год). Заглавие. Journal.
Таким образом, запятые изменены для полных остановок (периодов). Также ; между авторами следует изменить на & знак, если есть два автора, или должна быть запятая , за которой следует & для трех или более авторов. I.E
Glenn & Freg. (1995). Классное название книги. Название эпического журнала.
или
Перри, Смит @ Джонс. (1998). Заголовок кулера. Скучное имя журнала.
Я не совсем уверен, как это сделать. Я искал ссылку на python, google и здесь, в Stackoverflow, но не мог найти ничего (что я понял, по крайней мере). Здесь есть ЛОТЬ, чтобы полностью удалить знаки препинания, но это не то, что мне нужно.
Сначала я подумал, что функция замены будет работать, но это дает мне эту ошибку. (Я оставлю код, чтобы показать, что я пытался, но закомментирована)
str.replace(',', '.')
TypeError: replace() takes at least 2 arguments (1 given)
Он не был бы полностью решить мою проблему, но я понял, что это что-то, чтобы перейти от. Я предполагаю, что str.replace() не примет пунктуацию?
В любом случае, ниже мой код. У кого-нибудь есть другие идеи?
import csv
def TitleSearch():
titleSearch = input("Please enter the Title (or part of the title). \n")
for row in everything:
title = row[2]
if title.find(titleSearch) != -1:
print (row)
def AuthorSearch():
authorSearch = input("Please type Author name (or part of the author name). \n")
for row in everything:
author = row[0]
if author.find(authorSearch) != -1:
#str.replace(',', '.')
print (row)
def JournalSearch():
journalSearch = input("Please type in a Journal (or part of the journal name). \n")
for row in everything:
journal = row[3]
if journal.find(journalSearch) != -1:
print (row)
def YearSearch():
yearSearch = input("Please type in the Year you wish to search. If you wish to search a decade, simply enter the first three numbers of the decade; i.e entering '199' will search for papers released in the 1990's.\n")
for row in everything:
year = row[1]
if year.find(yearSearch) != -1:
print (row)
data = csv.reader (open('List.txt', 'rt'), delimiter='\t')
everything = []
for row in data:
everything.append(row)
while True:
searchOption = input("Enter A to search by Author. \nEnter J to search by Journal name.\nEnter T to search by Title name.\nEnter Y to search by Year.\nOr enter any other letter to exit.\nIf there are no matches, or you made a mistake at any point, you will simply be prompted to search again. \n")
if searchOption == 'A' or searchOption =='a':
AuthorSearch()
print('\n')
elif searchOption == 'J' or searchOption =='j':
JournalSearch()
print('\n')
elif searchOption == 'T' or searchOption =='t':
TitleSearch()
print('\n')
elif searchOption == 'Y' or searchOption =='y':
YearSearch()
print('\n')
else:
exit()
Заранее благодарим любого, кто может помочь, это действительно оценено!
Большое спасибо за твою помощь, это прекрасно сказано! –