您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

Python 2.xfile对象或Python 3.3io类中没有任何内容可让您为指定自定义分隔符readline。(for line in file最终使用与相同的代码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(或ioPython 2.x中的对象),并且想要利用已经维护在其中的缓冲区,BufferedioBase而不是仅仅将缓冲区放在缓冲区之上,那棘手的。这些io文档的确说明了如何做所有事情……但是我不知道任何简单的示例,因此您实际上必须至少阅读该页面的一半,然后略过其余部分。(当然,您可以直接使用原始文件…,但是如果您要查找unicode分隔符,则不能使用…)

python 2022/1/1 18:29:49 有191人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶