我有一个字典,其中以单元格坐标为键,所需的单元格内容为值,例如:
dict1 = {'AN32': '2', 'AZ17': '47', ect...}
单元格区域为D4: AZ52
我想将其写入csv文件。
我在设计时遇到的问题是字典不一定按字母或数字排序,如上例所示。
我知道如何使用
写入.csv文件with open('example.csv', 'w') as f:
for i in dict1:
f.write(str(dict1[i]) + ',')
这会按顺序写出值,这意味着它们不在正确的单元格中,我需要它们位于由其键指定的单元格中。
答案 0 :(得分:1)
此代码使用列表推导来构建每一行。
首先,我们使用web.config
模块中的uppercase
字符串创建列标签列表,然后使用简单的列表解析构建所有列标签的列表。
然后我们使用稍微复杂的列表理解,通过将每个列标签与当前行号(转换为字符串)组合来创建键。该密钥将传递到string
的{{1}}方法,以获取与该密钥相关联的值。我们使用一个空字符串dict1
作为.get()
的第二个arg,这样如果一个键在dict中不存在,我们就会得到一个空字符串。
然后我们使用''
方法连接所有字符串,用逗号分隔。
.get()
如果.join()
中的值实际上是from string import uppercase
#Make a list of the column letters
cols = list(uppercase[3:]) + ['A' + c for c in uppercase]
#print(cols)
with open('example.csv', 'w') as f:
for r in range(4, 53):
row = ','.join([dict1.get(c + str(r), '') for c in cols])
f.write(row + '\n')
而不是字符串,那么您需要在尝试加入字符串之前将它们转换为字符串。将列表理解更改为
dict1
即使某些值是字符串而某些值是数字,也会应对。