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

问题描述 投票:1回答:2

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

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

我正在读取字节流并使用csv.DictReader将其转换为字典:

data_iter = stream_from_s3_utf8(s3_stream)
csv_iter = csv.DictReader(data_iter)

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

python python-3.x file double-quotes
2个回答
1
投票

你可以通过将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)

0
投票

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

f = open('filename.foo')
raw = f.read()
f.close()
data = [i.strip() for i in raw.strip('|')]
© www.soinside.com 2019 - 2024. All rights reserved.