【发布时间】:2013-02-24 01:10:09
【问题描述】:
我想使用 python CSV 阅读器,但我想保留引号。这就是我想要的:
>>> s = '"simple|split"|test'
>>> reader = csv.reader([s], delimiter='|', skipinitialspace=True)
>>> reader.next()
['"simple|split"', 'test']
但我实际上得到了:
['simple|split', 'test']
在我的情况下,我希望引用的字符串仍然被引用。
我知道 CSV 阅读器正在按预期工作,我的用例是对它的滥用,但有什么方法可以让我按照自己的意愿来使用它吗?还是我必须编写自己的字符串解析器?
【问题讨论】:
-
您必须编写自己的解析器。引号是一种转义数据的方法,否则这些数据不会被视为一列,因此不被视为输出的一部分。
-
根据数据的复杂程度,您可能会作弊并使用像
filter(None, re.split(r'(".*?")|\|', s))这样可怕的东西 - 或查看pyparsing -
您好,我发布了一个答案,实际上我开发了 Martjin 和 Jon 所说的内容。你能说说你为什么不考虑使用正则表达式吗?