事后修复了Unicode的mojibake和其他问题
项目描述
ftfy: 修复你的文本
>>> from ftfy import fix_encoding
>>> print(fix_encoding("(ง'⌣')ง"))
(ง'⌣')ง
ftfy的完整文档可在ftfy.readthedocs.org找到。文档涵盖的内容远不止README,以下是一些链接
推荐信
- “我的生活又可行了!” — @planarrowspace
- “一件方便的魔法工具” — @simonw
- “帮我节省了大量令人沮丧的开发工作” — @iancal
- “ftfy立即做了正确的事情,没有多余的麻烦。出色的工作,解决了一个非常棘手的实际问题(全球问题!)。” — Brennan Young
- “我不知道我什么时候会用得上这个,但我肯定会把它添加到书签中。” — /u/ocrow
- “9.2/10” — pylint
它做了什么
以下是一些ftfy可以做到的例子(这些例子来自现实世界)
ftfy可以通过检测字符的特定模式来修复mojibake(编码错误),这些字符显然应该使用UTF-8编码,但被解码为其他编码
>>> import ftfy
>>> ftfy.fix_text('✔ No problems')
'✔ No problems'
这听起来不可能吗?其实并不是。UTF-8是一种设计良好的编码,当它被错误使用时很容易被发现,mojibake字符串通常包含我们恢复原始字符串所需的所有信息。
ftfy可以同时修复多层mojibake
>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.')
"The Mona Lisa doesn't have eyebrows."
它还可以修复应用了“花括号引号”的mojibake,直到引号被展开,否则无法一致地解码
>>> ftfy.fix_text("l’humanité")
"l'humanité"
ftfy可以修复本应包含字符U+A0(非断行空格)的mojibake,但U+A0被转换为ASCII空格,然后与另一个随后的空格组合
>>> ftfy.fix_text('Ã\xa0 perturber la réflexion')
'à perturber la réflexion'
>>> ftfy.fix_text('à perturber la réflexion')
'à perturber la réflexion'
ftfy还可以解码HTML实体,即使这些实体出现在HTML之外,甚至在实体被错误地大写的情况下
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable
>>> ftfy.fix_text('PÉREZ')
'PÉREZ'
这些修复并非在所有情况下都适用,因为ftfy有一个强烈的宗旨,即避免错误判断——它永远不会将正确解码的文本更改成其他内容。
以下文本可能以Windows-1252编码并解码为UTF-8,解码结果为'MARQUɅ'。然而,原始文本已经是合理的,所以没有更改。
>>> ftfy.fix_text('IL Y MARQUÉ…')
'IL Y MARQUÉ…'
安装
ftfy是一个Python 3包,可以使用pip
进行安装
pip install ftfy
(或者在同时全局安装了Python 2和3的系统上,使用pip3 install ftfy
,此时pip
指的是Python 2。)
如果你使用poetry
,你可以像通常一样将ftfy作为依赖项使用(例如poetry add ftfy
)。
本地开发
ftfy使用poetry
进行开发。其setup.py
是遗留的,不是推荐的安装方式。
安装Poetry,检出此存储库,并运行poetry install
以安装ftfy进行本地开发,例如尝试启发式方法或运行测试。
谁维护ftfy?
我是Robyn Speer,也被称为Elia Robyn Lake。你可以在GitHub或Cohost上找到我。
引用ftfy
ftfy已被用作主要NLP研究中的关键数据处理步骤。
在研究中,为所有基于你的工作的人适当致谢是很重要的。这包括软件,而不仅仅是像数学模型那样具有高地位的贡献。当你使用ftfy进行研究时,我唯一的要求是引用它。
ftfy在Zenodo上有可引用的记录(链接)。ftfy的引用可能如下所示
Robyn Speer. (2019). ftfy (Version 5.5). Zenodo.
http://doi.org/10.5281/zenodo.2591652
在BibTeX格式中,引用如下:
@misc{speer-2019-ftfy,
author = {Robyn Speer},
title = {ftfy},
note = {Version 5.5},
year = 2019,
howpublished = {Zenodo},
doi = {10.5281/zenodo.2591652},
url = {https://doi.org/10.5281/zenodo.2591652}
}
重要的许可说明
如果你不遵循ftfy的许可,则没有ftfy的许可。
这听起来很明显且自相矛盾,但有些人认为开源许可证意味着他们可以做他们想做的事情,尤其是在生成式AI领域。这是一个许可许可证,但你仍然必须遵守它。《Apache许可证》是唯一允许您使用和复制ftfy的许可证;否则,所有权利均予以保留。
如果您使用或分发ftfy,您必须遵守《Apache许可证》,包括您必须正确地归属ftfy(Robyn Speer)的作者。
您 不得 创建任何掩盖ftfy作者身份的衍生作品,例如将它的代码放入AI训练数据集中,包括在运行时将代码包含在AI训练中,或使用从这种数据集中复制代码的生成式AI。
根据我的判断,我可以通知您有关许可证违规的情况,并给您一个机会纠正它或删除您所拥有的所有ftfy副本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。