- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在浏览 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/
我在做example 47摘自“艰难地学习 Python”。 这是我的代码: from nose.tools import* from ex47.game import Room def test_r
我正在处理 LPTHW,但遇到了 Ex47 的属性错误。我浏览过这个网站并在谷歌上搜索帮助,但似乎找不到任何东西。 我得到的错误是这样的: Traceback (most recent call
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
Exercise 43 Learn Python the Hard Way 使用一个字典,其值是构造函数。字典是在类中定义的。我不明白当此类返回字典值之一时会发生什么。每次都会返回给定类的新对象吗?
我正在学习 Zed Shaw 的《艰难地学习 Python》,并且正在进行练习 43。 该练习是一个使用对象和类的游戏脚本。我已经复制了 Zeds 脚本,只是想让它运行。 我希望,如果我能看到它运行,
我目前正在通过 LPTHW 并且我要到 excercise 48这是我第一次碰壁。 这是给我的测试用例的第一部分 from nose.tools import * from ex48 import l
在浏览 LPTHW 时,我开始阅读此处的代码: https://github.com/BrechtDeMan/secretsanta/blob/master/pairing.py 我一直在努力理解为什
这是我的第一个问题,请保持温柔。 如问题所述,我在 LPTHW Ex。 39. 我需要帮助来理解 get 函数中的默认变量。我想我不太明白为什么它被定义为 default=None 作为参数(或者为什
我正在学习一个简短的 Python 教程,但我无法完成最后一个练习。这是app.py的源码 import web urls = ( '/', 'Index' ) app = web.appli
我正在做 Learn Python The Hard Way 的练习 48 并编写 lexicon 字典和 scan 模块来运行以下测试: from nose.tools import * from
我是通过 LPTHW 工作的新手 This is the link for it 。在 ex48 中,我得到了很多代码作为单元测试,我应该编写相应的 my_code 来进行测试(使用 Nose 测试,
我正在从“以困难的方式学习python 3”中的“项目骨架”中出现此错误。我仍然不知道这些到底是什么,只是按照以下步骤操作。那么为什么这个问题以及如何解决呢? C:\>pip install virt
我是一名优秀的程序员,十分优秀!