Python convtools 展示:使用自定义换行符读取数据

有时,您需要读取文件或从缓冲区中按行读取数据,但您知道换行符不是默认的。问题是,python 在文本模式下不支持自定义换行,在二进制模式下也完全不支持换行。

convtools 包含两个小助手,用于使用自定义分隔符从缓冲区读取数据:
split_buffer: 用于字符串
split_buffer_n_decode: 用于字节

阅读文本

import io
from convtools.contrib.fs import split_buffer

buffer = io.StringIO("a,b;;;1,2;;;3,4")
assert list(split_buffer(buffer, delimiter=";;;", chunk_size=32768)) == [
    "a,b",
    "1,2",
    "3,4",
]

读取字节

import io
from convtools.contrib.fs import split_buffer_n_decode

buffer = io.BytesIO(
    b"b'\xe4\xbd\xa0\xe4\xbb\xac\xe5\xa5\xbd;;;\xe5\xbe\x88\xe9\xab\x98\xe5\x85\xb4\xe4\xbd\xa0\xe4\xbb\xac\xe6\x9d\xa5\xe5\x88\xb0\xe8\xbf\x99\xe9\x87\x8c\xef\xbc\x81'"
)
assert list(
    split_buffer_n_decode(
        buffer, delimiter=b";;;", chunk_size=32768, encoding="utf-8"
    )
) == ["b'你们好", "很高兴你们来到这里!'"]

在接下来的文章中,我将告诉你 convtools 如何帮助你在不将 csv 类文件完全载入内存的情况下处理它们,以及如何轻松地从 python 对象序列中写入它们。

如果您觉得 convtools 有帮助,请在下面的评论中传播或分享您的使用案例。

英文文档: https://convtools.readthedocs.io/en/latest/contrib_fs/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值