我正在寻找创建一个要求输入的代码,然后将数据添加到输出形式的制表符动画文件中:
Author.Year.Title.Journal
但我还需要以一种方式格式化输入,如果有两个作者输出 将是:
Author1 &Author2.year.title.journal
如果他们是3位作者,那么输出将是
Author1,Author2&Author3. year. title. journal
到目前为止,这是我的代码:
try:
import csv
file = raw_input('Enter Filename:')
with open(file,'a') as openfile:
writer = csv.writer(openfile,delimiter='.')
ans=True
while ans:
print ("""
1.
2.
3
""")
ans = raw_input("How Many Authors?")
if ans=="1":
author = raw_input('Enter Author Name:')
title = raw_input('Enter Title Name:')
year= raw_input('Enter year:')
journal = raw_input('Enter Journal:')
writer.writerow([author,title,year,journal])
elif ans=="2":
auhtor_1 = raw_input('Enter First Author''s Name:')
author_2 = raw_input('Enter Second Author''s Name:')
title = raw_input('Enter Title Name:')
year= raw_input('Enter year:')
journal = raw_input('Enter Journal:')
elif ans=="3":
auhtor_1 = raw_input('Enter First Author''s Name:')
author_2 = raw_input('Enter Second Author''s Name:')
author_3 = raw_input('Enter Third Author''s Name:')
title = raw_input('Enter Title Name:')
year= raw_input('Enter year:')
journal = raw_input('Enter Journal:')
except IOError:
print 'Sorry Something went Wrong'
这就是我被困住的地方。
答案 0 :(得分:0)
使用列表存储作者姓名。
authors = []
num_authors = int(raw_input("How Many Authors? "))
for i in range(num_authors):
authors.append(raw_input("Enter Author's Name ({}): ".format(i+1)))
除了处理任意数量的作者外,作者列表通常比格式化的作者字符串更有用;例如可以很容易地确定作者的数量,对作者进行排序,或者以不同的格式输出列表。
要获得所需的输出,您可以使用str.join()
添加标点符号:
authors_string = ' & '.join([', '.join(authors[:-1]), authors[-1]]
if len(authors) > 2 else authors)
内部str.join()
以逗号连接除最后一个之外的所有作者,或者如果作者少于2个,则不会发生连接。如果需要,外连接会在最终的2位作者之间添加&符号。