我是Python的初学者。 我有一个名为G8_Leaders.txt的简单字典 - 如下:{Cameron:英国,默克尔:德国,奥巴马:美国,普京:俄罗斯} 我正在尝试遍历这些对 - 在列中显示内容,使用基本的“for”循环,如下所示:
f0 = "G8_Leaders.txt"
f1 = open(f0)
for i in f1:
print(i, end=" ")
else:
print("Finished with Document: ", f0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
我希望列中的结果,例如:
默克尔德国
Cameron UK
奥巴马美国
等等......但是,结果只打印在一行中,因为它们显示在文本文件中。
这样做的正确方法是什么?
答案 0 :(得分:1)
首先,您必须在文件中修复字典的表示形式:
d = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'}
可以通过在str()
的每个键和值上调用d
以编程方式完成此操作。
假设这是固定的,一个解决方案是:
# Create a file for test bench:
d = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'}
with open("G8_Leaders.txt", "w") as f:
f.write(str(d) +'\n')
#Read and print from the file:
with open("G8_Leaders.txt", "r") as f:
data = f.readlines()
for line in data:
d = eval(line)
for y, z in d.items():
print(y, z)
输出:
Cameron UK
Merkel Germany
Putin Russia
Obama USA
答案 1 :(得分:0)
好的,这里有几件事情正在发生。 f1
是一个文件对象,这不是您所期望的。如果你想以字符串形式访问它,你可以
`f1_string = f1.read()`
将文件作为字符串读入变量f1_string
。你可以这样做:
for line in f1.readlines():
# operate on one line at a time in this block
如果您希望一次读取一行,如果每个元素在文本文件中都在自己的行上,那么这将适用于您的情况。由于我们不知道您的文本文件究竟是什么样子,因此很难提供更具体的帮助。人们所指的json
模块可以找到here,但我不完全确定这是你想要的。
答案 2 :(得分:0)
假设您的文本文件与您所描述的一样,请尝试以下操作:
with open(f0, 'r') as f:
for line in f:
items = line.split(',')
for item in items:
leader = item.split(':')[0].replace('{','')
country = item.split(':')[1].replace('}','')
print(leader,country)
无论您的数据是否包含换行符,这都应该有效。
答案 3 :(得分:0)
尝试此操作来迭代字典:
leaders = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'}
for leader in leaders:
print(leader, leaders[leader])
答案 4 :(得分:-1)
public static
只需将其加载为json(至少我认为如果您在文本文件中正确格式化了json ,则不完全清楚)...(尽管字典是无序的,但如果您需要某个字典,则会发出警告订购你必须提供更多的澄清)