python – 获取类似csv的解析和行长字节数?

python – 获取类似csv的解析和行长字节数?,第1张

概述我熟悉csv Python模块,并且相信在我的情况下它是必要的,因为我有一些字段包含引号内的分隔符(而不是,但这是不相关的). 但是,在分割成列之前,我还在寻找每个原始行的字节数长度.我不能指望数据总是引用一个列,我不知道是否/当csv将剥离外部引号,所以我不认为(但可能是错误的)只是加入我的分隔符将重现原始行字符串(少CRLF字符).意思是,我不肯定以下作品: with open(fname) 我熟悉csv Python模块,并且相信在我的情况下它是必要的,因为我有一些字段包含引号内的分隔符(而不是,但这是不相关的).

但是,在分割成列之前,我还在寻找每个原始行的字节数长度.我不能指望数据总是引用一个列,我不知道是否/当csv将剥离外部引号,所以我不认为(但可能是错误的)只是加入我的分隔符将重现原始行字符串(少CRLF字符).意思是,我不肯定以下作品:

with open(f@R_502_6889@) as fh:    reader = csv.reader(fh,delimiter="|")    for row in reader:        original = "|".join(row) ## maybe?

我已经尝试过查看csv以查看是否有任何东西我可以使用/ monkey-patch用于此目的,但由于_csv.reader是一个.so,我不知道如何搞乱它.

如果我正在处理XY问题,我的最终目标是通读CSV文件,提取某些字段及其整体文件偏移量,以创建一种查找索引.这样,稍后,当我有一个候选值列表时,我可以检查每个文件的偏移量和seek(),而不是再次查看整个文件.作为一个规模的想法,我可能有100k值来查找10GB文件,所以重新读取文件100k倍对我来说效率不高.我对除CSV模块之外的其他建议持开放态度,但仍需要类似csv的智能解析行为.

编辑:不知道如何使标题和正文已经解释清楚 – 只是寻找() – 文件句柄是不够的,因为我还需要将行解析为csv,以便提取其他信息.

解决方法 您不能将_csv.reader子类化,但csv.reader() constructor的csvfile参数只能是“类文件对象”.这意味着您可以提供自己的类的实例来执行一些预处理 – 例如记住最后一行读取的长度和文件偏移量.这是一个显示确切的实现.请注意,行长度不包括行尾字符.它还显示了在读取文件后如何存储和使用每行/行的偏移量.

import csvclass CSVinputfile(object):    """ file-like object. """    def __init__(self,file):        self.file = file        self.offset = None        self.linelen = None    def __iter__(self):        return self    def __next__(self):        offset = self.file.tell()        data = self.file.readline()        if not data:            raise stopiteration        self.offset = offset        self.linelen = len(data)        return data    next = __next__offsets = []  # remember where each row startsf@R_502_6889@ = 'unparsed.csv'with open(f@R_502_6889@) as fh:    csvfile = CSVinputfile(fh)    for row in csv.reader(csvfile,delimiter="|"):        print('offset: {},linelen: {},row: {}'.format(            csvfile.offset,csvfile.linelen,row))  # file offset and length of row        offsets.append(csvfile.offset)  # remember where each row started
总结

以上是内存溢出为你收集整理的python – 获取类似csv的解析和行长字节数?全部内容,希望文章能够帮你解决python – 获取类似csv的解析和行长字节数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193730.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存