如何从python中的文件中读取由自定义分隔符终止的记录?

如何从python中的文件中读取由自定义分隔符终止的记录?,第1张

如何从python中的文件中读取由自定义分隔符终止的记录?

Python 2.x

file
对象或Python 3.3
io
类中没有任何内容可让您为指定自定义分隔符
readline
。(
for line infile
最终使用与相同的代码
readline
。)

但是,自己构建它很容易。例如:

def delimited(file, delimiter='n', bufsize=4096):    buf = ''    while True:        newbuf = file.read(bufsize)        if not newbuf: yield buf return        buf += newbuf        lines = buf.split(delimiter)        for line in lines[:-1]: yield line        buf = lines[-1]

这是一个愚蠢的例子:

>>> s = io.StringIO('abcZZZdefZZZghiZZZjklZZZmnoZZZpqr')>>> d = delimited(s, 'ZZZ', bufsize=2)>>> list(d)['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr']

如果您想同时使用二进制文件和文本文件,尤其是在3.x中,则比较麻烦。但是,如果只需要为一种或另一种(以及一种或另一种语言)工作,则可以忽略它。

同样,如果您使用的是Python 3.x(或

io
Python
2.x中的对象),并且想要利用已经维护在其中的缓冲区
BufferedIObase
而不是仅仅将缓冲区放在缓冲区之上,那棘手的。这些
io
文档的确说明了如何做所有事情……但是我不知道任何简单的示例,因此您实际上必须至少阅读该页面的一半,然后略过其余部分。(当然,您可以直接使用原始文件…,但是如果您要查找unipre分隔符,则不能使用…)



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

原文地址: https://outofmemory.cn/zaji/5630388.html

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

发表评论

登录后才能评论

评论列表(0条)

保存