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

时间:2019-03-26 22:14:59

标签: python python-3.x file double-quotes

我在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中有什么方法可以在保留引号的同时读取文件的内容?

2 个答案:

答案 0 :(得分:1)

您可以通过将import os import xml.etree.ElementTree as ET def process(data): xml_obj = ET.fromstring(data) for race in xml_obj: for k,v in race.items(): if k == 'meetingCode' and v == '349083': return True return False path = '<xml_dir>' xml_files = os.listdir(path) for xml_file in files: xml_file_path = os.path.join(path, xml_file) fp = open(xml_file_path) data = myfile.read() if process(data): #copy the file 参数传递给其构造函数,来控制csv.reader的方式以及扩展的csv.DictReader的引用方式。全部可能性都在csv模块中定义,但是在这里您需要quoting

csv.QUOTE_NONE

答案 1 :(得分:0)

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

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