Python 2/3 Unicode CSV兼容层
项目描述
csv23为Python 2和3提供了基于Unicode的Python 3 csv模块的API。应该在两种版本的Python下运行代码可以使用它来隐藏2和3之间的bytes与text差异,并坚持使用较新的基于Unicode的接口。
它在所有地方使用默认编码utf-8。
改进
csv23解决了stdlib csv模块中的以下错误
链接
附加功能
该软件包还提供一些便利功能,例如 open_csv() 上下文管理器,用于以正确的模式打开 CSV 文件并返回一个 csv.reader 或 csv.writer
>>> import csv23
>>> with csv23.open_csv('spam.csv') as reader: # doctest: +SKIP
... for row in reader:
... print(', '.join(row))
Spam!, Spam!, Spam!'
Spam!, Lovely Spam!, Lovely Spam!'
Python 3 附加功能
对于要在调用代码中打开类似文件的对象的情况,例如直接读写二进制流(如由调用者控制的 ZIP 文件),read_csv() 和 write_csv() 函数(仅在 Python 3 中可用)非常有用
>>> import io
>>> buf = io.BytesIO()
>>> import zipfile
>>> with zipfile.ZipFile(buf, 'w') as z, z.open('spam.csv', 'w') as f:
... csv23.write_csv(f, [[1, None]], header=['spam', 'eggs'])
<zipfile...>
>>> buf.seek(0)
0
>>> with zipfile.ZipFile(buf) as z, z.open('spam.csv') as f:
... csv23.read_csv(f, as_list=True)
[['spam', 'eggs'], ['1', '']]
csv23 在内部使用给定编码和 newline='' 的 io.TextIOWrapper 包装字节流(请参阅 csv 模块的 文档)。
write_csv()-函数还支持使用 .update(<bytes>) 方法更新对象,如 hashlib.new() 实例,这允许在将给定的行写入磁盘之前计算从生成的二进制 CSV 文件输出中产生的校验和(注意,返回的是对象)
>>> import hashlib
>>> csv23.write_csv(hashlib.new('sha256'), [[1, None]], header=['spam', 'eggs']).hexdigest()
'aed6871f9ca7c047eb55a569e8337af03fee508521b5ddfe7ad0ad1e1139980a'
这两个函数都有一个可选的 autocompress 参数:将其设置为 True,如果文件参数是以 '.bz2'、'.gz' 和 '.xz' 结尾的路径,则透明地压缩(或解压缩)。
安装
此软件包在 Python 2.7 和 3.7+ 下运行,使用 pip 进行安装
$ pip install csv23
另请参阅
许可证
此软件包在 MIT 许可证 下分发。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
csv23-0.3.4.zip (42.6 kB 查看散列值)
构建分发
csv23-0.3.4-py2.py3-none-any.whl (18.5 kB 查看哈希值)
关闭
csv23-0.3.4.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12faa4b222808fc8963d4b6490a5b42fe3814a0b2c370ffb994944ac62c55a54 |
|
MD5 | 135aefd7589e7941f3657dbd93ee71a4 |
|
BLAKE2b-256 | 4c441dea0214d661e31c8d5bcb76e0b44d07fa852d17965440aabf37dca5a220 |
关闭
csv23-0.3.4-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bdf14715b49e151029a3cd1cca953175619fc16356dfb3161432c4028c4436fb |
|
MD5 | bbdff6a796014c728303a1ef5e61c2d6 |
|
BLAKE2b-256 | dd88ace08defb77cd3530187048e222b4c55e38bb78917183c07c02b1c8c8b07 |