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

标签 python csv dictionary

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

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

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

最佳答案

此代码使用列表理解来构建每一行。

首先,我们使用 string 模块中的 uppercase 字符串创建列标签列表,然后我们使用一个简单的列表构建所有列标签的列表理解。

然后我们使用稍微复杂的列表理解,通过将每个列标签与当前行号(转换为字符串)相结合来创建一个键。该键被传递给 dict1.get() 方法以获取与该键关联的值。我们使用一个空字符串 '' 作为 .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 中的值实际上是 int 而不是字符串,那么您需要在尝试连接它们之前将它们转换为字符串。将列表理解更改为

row = ','.join([str(dict1.get(c + str(r), '')) for c in cols])

即使一些值是字符串而一些是数字,这也能应付。

关于python - 写入 csv 时使用字典键作为坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920681/

相关文章:

python - 带登录名的 Web.py 待办事项列表

python - 无需首先获得 401 错误即可为 Python 和授权进行 Mechanize

python - 为什么输出会是11032? Python3.6

python - 在字典列表中合并相同键的值

python - 在特定位置的数据框中插入列表作为行

python - 字符串分割对单个字符串有效,但对 pandas 中的一系列字符串无效

php - 上传带有自定义 ID 的 CSV

c++ - getline() 函数将标题捆绑在一起

mysql - 以下 MySQL csv 导入查询术语是什么意思?

python - 漂亮的嵌套字典作为表格