【发布时间】:2018-10-14 14:37:59
【问题描述】:
我有一个 Python csv.reader() 问题: 我有一个文本文件,其中包含基本上可以被 csv.reader 读取的数据,但我需要一个额外的功能,恐怕还没有包括在内: 我需要它返回一对 (a,b) 而不是返回单元格的值,其中 a 是单元格内容,b 是 True 或 False,具体取决于读者是否确实从单元格中删除了引号。
示例:我的文件包含一行(此处不可见:单元格是制表符分隔的):
"123" 123 """123"""
它应该返回它[(123,True), (123, False), ("123",True)]
我不能使用 quoting = csv.QUOTE_NONE,因为单元格中有引号和换行符。
关于我如何“超载”阅读器功能的任何想法?或者还有什么我可以用的吗?
【问题讨论】:
-
不幸的是,csv 模块(至少在标准 Python 中)不是纯 Python 模块,而是调用 C 代码。您将不得不自己动手,但由于 csv 有很多极端情况,我的建议是获取源 Python 发行版并阅读它是如何实现的。然后,您可以在 C + Python 或纯 Python 中基于标准 csv 制作特定模块。或者,如果您只需要完整 CSV 规范的一个子集,自定义专用模块/功能可能是可行的方法
-
@Serge Ballesta 感谢您的解释!
-
如果您在edit 问题中包含您目前拥有的代码,将会有所帮助。你能给一个示例 CSV 文件的链接吗? (例如使用 pastebin)