gpt4 book ai didi

python - LPTHW : double quotes around CSV. 作家

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:21 24 4
gpt4 key购买 nike

在浏览 LPTHW 时,我开始阅读此处的代码:

https://github.com/BrechtDeMan/secretsanta/blob/master/pairing.py

我一直在努力理解为什么输出 CSV 有双引号。这里有几个关于这个问题的问题,但我不是在摸索。

引语是从哪里引入的?

编辑:几周前我给作者写了信,但没有回音。

编辑 2:输出示例...

"Alice,101,alice@mail.org,Wendy,204,wendy@mail.org"

最佳答案

write_file 函数中引入了双引号。

CSV 文件表面上看起来很简单,但迟早会遇到一些更复杂的问题。第一个是:如果字段内容中出现分隔符字符应该怎么办?因为CSV格式没有真正的标准,所以不同的人对这个问题的正确答案有不同的想法。

Python csv 库试图抽象出这种复杂性和各种方法,并使其更容易按照不同的规则读写 CSV 文件。这是由 Dialect class 完成的对象。

write_file 函数的作者决定通过将所有字段和分隔符连接在一起来手动构造输出行,但随后使用 csv 模块将数据实际写入文件:

writer.writerow([givers_list[ind][1] + ',' + givers_list[ind][2]
+ ',' + givers_list[ind][3]
+ ',' + givers_list[rand_vec[ind]][1] + ','
+ givers_list[rand_vec[ind]][2] + ',' + givers_list[rand_vec[ind]][3]])

csv 模块的这种不一致使用导致整行数据被视为单个字段。因为该字段包含用作字段分隔符的字符,所以 Dialect.quoting 决定了应该如何处理它。默认引用配置,csv.QUOTE_MINIMAL 表示该字段应使用 Dialect.quotechar 引用 - 默认为双引号字符 (")。那是为什么最终整个字段都被双引号字符包围。

快速简单但不正确的解决方案是将引用算法更改为 csv.QUOTE_NONE。这将告诉 writer 对象永远不要包围字段,而是通过 Dialect.escapechar 转义特殊字符。根据文档,将其设置为 None(默认)会引发错误。我想将它设置为空字符串就可以完成这项工作。

正确的解决方案是向 writer.writerrow 提供预期的输入数据 - 字段列表。这应该做(未经测试):

writer.writerow([givers_list[ind][1], givers_list[ind][2],
givers_list[ind][3],
givers_list[rand_vec[ind]][1],
givers_list[rand_vec[ind]][2], givers_list[rand_vec[ind]][3]])

关于python - LPTHW : double quotes around CSV. 作家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com