使用sql连接,在该连接中我得到一个返回列表,其中每个选择行包含4个特定项。我遇到打印输出与输出文本文件不同的问题。
当我打印此列表时,看起来应该是这样,没问题。
>>>print(my_list)
>>>['item1', 'item2', 'item3', 'item4', 'item1a', 'item2a', 'item3a', 'item4a']
我添加了一些标签,以使用内容描述标签来打印这些项目,并执行以下操作:
labels = ['ID1', 'ID2', 'ID3', 'ID4']
my_dictionary = {}
filename = '\\Somefilepath\\file.txt'
len_of_labels = len(labels)
with open(filename, "w", encoding='utf-8') as f:
for i, l in enumerate(my_list):
my_dictionary[l] = labels[i % len_of_labels]
for d in my_dictionary:
f.write('{:15} : {:3}'.format(my_dictionary[d], d))
f.close()
如果我使用print而不是f.write,则会得到预期的输出:
ID1 item1
ID2 item2
ID3 item3
ID4 item4
ID1 item1a
ID2 item2a
ID3 item3a
ID4 item4a
# And so one
但是当使用上述方法写入文本文件时,它会将长度缩短到比len项短,然后在第二次迭代时停止,因此看起来像这样:
ID1 item1
ID2 item2
ID3 item3
ID1 item1a
ID2 item2a
# Does not give me all 4 on the first iteration and cuts off the second one
答案 0 :(得分:0)
我认为这是因为您是在完全创建字典之前编写字典元素的。尝试将创建与编写分开,如下所示:
# first create the dictionary
for i, l in enumerate(my_list):
my_dictionary[l] = labels[i % len_of_labels]
# then write it to file
with open(filename, "w", encoding='utf-8') as f:
for d in my_dictionary:
f.write('{:15} : {:3}\n'.format(my_dictionary[d], d))
答案 1 :(得分:0)
在进行了一些测试并在其他人的帮助下进行了复习之后,字典成为了具有相同键值对的问题。发布包含对齐方式格式的有效方法。
with open(filename, "w", encoding='utf-8') as f:
for idx, value in enumerate(my_list):
i = labels[idx % 3]
f.write('{:15} : {:3}'.format(i, value))