如何使用 Python 验证竖线分隔文件中值的双引号?

How can I validate the double quotes of values in a pipe delimited file using Python?

我在 S3 中有一个竖线分隔的文件,其中的行如下所示:

123 | "val 2" | "" | """ | | val5

我正在读取字节流并使用 csv.DictReader:

将其转换为字典
data_iter = stream_from_s3_utf8(s3_stream)
csv_iter = csv.DictReader(data_iter)

当我使用包将文件的内容转换为 python 代码时,这些包(明智地)推断双引号只是指示某些值应该是一个字符串,所以 "val 2" (在文件中带有双引号)作为字符串值进入我的字典,没有任何引号。空值(上面的第五个值)和一对双引号(上面的第三个值)都作为空字符串进入我的字典。但是我需要验证我文件中的引用,所以我需要访问文字引号。 (例如,上面的第三个值无效,但第五个有效。)Python 中是否有任何方法可以在保留引号的同时读取文件的内容?

我知道您已经找到了答案,但这是从头开始的答案:

f = open('filename.foo')
raw = f.read()
f.close()
data = [i.strip() for i in raw.strip('|')]

您可以通过将 quoting 参数传递给其构造函数来控制 csv.reader 以及 csv.DictReader 如何处理引用。整个可能性范围都在 csv 模块中定义,但在这里您需要 csv.QUOTE_NONE

data_iter = stream_from_s3_utf8(s3_stream)
csv_iter = csv.DictReader(data_iter,quoting=csv.QUOTE_NONE)