使用串联将字典转换为 CSV 文件

问题描述 投票:0回答:2

上图中是一个可以使用串联将字典转换为 csv 文件的示例,但是我很难理解在 for 循环中不断重复 csvString 变量的语法

我尝试通过导入 csv 模块来做类似的事情,但我的任务是了解如何手动完成此操作以简单地在您的 ide 中输出 csv 文件

python csv dictionary concatenation delimiter
2个回答
0
投票

以下是此代码的工作原理。字典中的每个条目都会成为 csv 文件中的一行

对于字典的每个键:

  1. 使用给定的键启动
    csvString
    并添加分隔符。到目前为止,
    csvString
    "p1,"
  2. 加载给定键的值
  3. 添加列表的第一项
    details
    delimiter
    。对于第一个键,它将是
    "Takeshi Tanaka,"
    csvString
    变为
    "p1,Takeshi Tanaka,"
  4. 使用
    str
    函数将列表
    details
    delimiter
    的第二项添加为字符串。对于第一个键,它将是
    "25,"
    csvString
    变为
    "p1,Takeshi Tanaka, 25,"
  5. 使用
    str
    函数将列表
    details
    的第三项和
    delimiter
    作为字符串添加。对于第一个键,它将是
    "1.73,"
    csvString
    变为
    "p1,Takeshi Tanaka, 25,1.73,"
  6. 将列表的第四项
    details
    endLine
    字符添加到
    csvString
    csvString
    变为
    "p1,Takeshi Tanaka, 25,1.73,Tokyo\n"

您现在可以在

for
循环中添加一行,将
csvString
写入 csv 文件。运行循环将为文件中的每个条目添加一行


0
投票

+=
表示将右侧部分与左侧部分相加,并用总和替换左侧部分。它使
a = a + b
更加简洁:
a += b
。它适用于数字(真正的总和),在本例中适用于字符串(串联)。

line = ''
line += 'Alice'
line += ' Cheng'
line += ', 47,'
line += ' Mailing Svcs'

print(line)  # Alice Cheng, 47, Mailing Svcs

另请考虑这种相对简单的方式来构建和打印 CSV。

我修改了数据,以便最后一列包含需要引用的逗号作为数据(实际上是正确的 CSV):

import csv, sys

people = {
    "p1": ["Takeshi Tanaka", 25, 1.73, "Tokyo, Japan"],
    "p2": ["Lisa Penny", 32, 1.69, "London, England"],
    "p3": ["Lorenzo Dubois", 38, 1.84, "Paris, France"],
}

writer = csv.writer(sys.stdout)
for id_, details in people.items():
    writer.writerow([id_] + details)

我知道也许练习只是打印一些“调试值”,但代码的标题说构建 CSV 以及正确构建 CSV 的唯一方法(不会引入您自己的编码错误,或者其他人(稍后必须处理)将使用 CSV 感知工具,例如 csv 模块。

© www.soinside.com 2019 - 2024. All rights reserved.