我有一个列表来自txt文件的加载,该文件使用JSON格式化,程序打印出我想要的元素(通过索引,从用户请求),尽管它以不需要的格式打印列表
elif choice == 'v':
# View a joke.
# See Point 6 of the "Requirements of admin.py" section of the assignment brief.
jokeIndex = input('Joke number to view: ')
index = int(jokeIndex)
file = open('data.txt', 'r')
data = json.load(file)
print(data[index])
file.close();
pass
它按字面打印它是如何在txt文件中编写的,而不仅仅是实际的元素
Choose [a]dd, [l]ist, [s]earch, [v]iew, [d]elete or [q]uit.
v
Joke number to view: 1
{'setup': 'whats brown and sticky', 'punchline': 'a stick'}
虽然我希望输出类似这样的东西
Q:whats brown and sticky? A: a stick
答案 0 :(得分:4)
而不是
print(data[index])
你应该这样做:
print('Q: {setup}? A: {punchline}'.format(**data[index])
原因是因为它是一本字典,您可以通过键访问它
我放**data[index]
的方式称为字典扩展
它会根据可用的密钥自动格式化字符串。
您可以使用以下示例代码查看字典中的键和值:
print(data[index].keys())
print(data[index].values())
您还可以使用以下内容返回键:值对:
for key, value in data[index].items():
print(key, value)
答案 1 :(得分:2)
您需要格式化输出
elif choice == 'v':
jokeIndex = input('Joke number to view: ')
index = int(jokeIndex)
file = open('data.txt', 'r')
data = json.load(file)
print('Q: ' + data[index]['setup'])
print('A: ' + data[index]['punchline'])
file.close();
pass
答案 2 :(得分:0)
f = "Q:{}? A: {}"
row = data[index]
f1 = f.format(row.get('setup'), row['punchline'])
print f1