跳转到主要内容

事后修复了Unicode的mojibake和其他问题

项目描述

ftfy: 修复你的文本

PyPI package Docs

>>> 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。你可以在GitHubCohost上找到我。

引用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副本。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

ftfy-6.2.3.tar.gz (64.2 kB 查看散列值)

上传

构建分发

ftfy-6.2.3-py3-none-any.whl (43.0 kB 查看散列值)

上传 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面