上图中是一个可以使用串联将字典转换为 csv 文件的示例,但是我很难理解在 for 循环中不断重复 csvString 变量的语法
我尝试通过导入 csv 模块来做类似的事情,但我的任务是了解如何手动完成此操作以简单地在您的 ide 中输出 csv 文件
以下是此代码的工作原理。字典中的每个条目都会成为 csv 文件中的一行
对于字典的每个键:
csvString
并添加分隔符。到目前为止,csvString
是 "p1,"
。details
和 delimiter
。对于第一个键,它将是 "Takeshi Tanaka,"
。 csvString
变为 "p1,Takeshi Tanaka,"
。str
函数将列表 details
和 delimiter
的第二项添加为字符串。对于第一个键,它将是 "25,"
。 csvString
变为 "p1,Takeshi Tanaka, 25,"
。str
函数将列表 details
的第三项和 delimiter
作为字符串添加。对于第一个键,它将是 "1.73,"
。 csvString
变为 "p1,Takeshi Tanaka, 25,1.73,"
。details
和 endLine
字符添加到 csvString
。 csvString
变为 "p1,Takeshi Tanaka, 25,1.73,Tokyo\n"
。您现在可以在
for
循环中添加一行,将 csvString
写入 csv 文件。运行循环将为文件中的每个条目添加一行
+=
表示将右侧部分与左侧部分相加,并用总和替换左侧部分。它使 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 模块。