gpt4 book ai didi

python - 在文件对象而不是字符串上运行正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:26 25 4
gpt4 key购买 nike

我写了一个很好的小sql到csv表达式(如下),它适用于我想要处理的mysqldump数据的格式。

但是,我想遍历非常大文件,可能太大而无法放入内存。输入可能是[gb]压缩的并且不包含换行符。理想情况下,我希望能够处理从网络位置读入的输入数据,而不是先下载它,然后从磁盘读取文件。

如何在类似文件的对象上运行正则表达式或使用分块读取?

def sql2csv(buf):
rowmatcher = re.compile(r"""
(?<=\()
(?:
(?:
-?\d+(?:\.\d+)?
|NULL
|'(?:[^'\\]|\\')*'
)
(?:,|(?=\)))
)+
(?=\)[,;])
""", re.X)

return (
[r.decode('string_escape').decode('utf8') for r in row]
for row in csv.reader(
(x.group(0) for x in rowmatcher.finditer(buf)),
quotechar="'", escapechar='\\', doublequote=False))

最佳答案

也许是这样的?

#pseudocode

buf = read(1024)
while True:
if re.match(regexp, buf):
buf = re.sub(regexp, do_stuff, buf)
else:
buf += read(1024)

其中 do_stuff 完成工作并返回 '',从而从缓冲区中删除已处理的内容

关于python - 在文件对象而不是字符串上运行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com