在写入csv时使用字典键作为坐标

时间:2015-08-10 13:19:14

标签: python csv dictionary spreadsheet

我有一个字典,其中以单元格坐标为键,所需的单元格内容为值,例如:

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]) + ',')

这会按顺序写出值,这意味着它们不在正确的单元格中,我需要它们位于由其键指定的单元格中。

1 个答案:

答案 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

即使某些值是字符串而某些值是数字,也会应对。