4个版本
0.1.7 | 2023年12月19日 |
---|---|
0.1.3 | 2023年12月5日 |
0.1.1 | 2023年12月4日 |
0.1.0 | 2023年11月22日 |
在文本处理类别中排名第549
每月下载量34次
225KB
5K SLoC
plsfix
plsfix是ftfy的替代品,用Rust编写,速度快10倍以上。
>>> from plsfix import fix_text
>>> print(fix_text("(ง'⌣')ง"))
(ง'⌣')ง
安装
Python
pip install plsfix
Rust
cargo add plsfix
功能
(摘自ftfy的README文件)
以下是plsfix能做的几个例子(来自现实世界)
plsfix可以通过检测字符的模式来修复mojibake(编码混合),这些字符明显应该是UTF-8,但被解码为其他东西
>>> import plsfix
>>> plsfix.fix_text('✔ No problems')
'✔ No problems'
这听起来不可能?实际上并非如此。UTF-8是一种设计良好的编码,当它被滥用时很容易被发现,而mojibake字符串通常包含我们恢复原始字符串所需的所有信息。
plsfix可以同时修复多层的mojibake
>>> plsfix.fix_text('The Mona Lisa doesn’t have eyebrows.')
"The Mona Lisa doesn't have eyebrows."
它可以修复已经应用了“波浪引号”的mojibake,直到引号被展开之前,这些引号不能被一致地解码
>>> plsfix.fix_text("l’humanité")
"l'humanité"
plsfix可以修复包含字符U+A0(非换行空格)的mojibake,但U+A0被转换成了ASCII空格,然后与另一个随后的空格组合
>>> plsfix.fix_text('Ã\xa0 perturber la réflexion')
'à perturber la réflexion'
>>> plsfix.fix_text('à perturber la réflexion')
'à perturber la réflexion'
plsfix还可以解码HTML实体,即使这些实体出现在HTML之外,甚至在实体被错误地大写的情况下
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable
>>> plsfix.fix_text('PÉREZ')
'PÉREZ'
并不是在所有情况下都会应用这些修复,因为plsfix有一个强烈的避免误报的目标——它永远不会将正确解码的文本更改为其他东西。
以下文本可以以Windows-1252编码,在UTF-8中解码,并将解码为'MARQUɅ'。然而,原始文本已经合理,因此没有更改。
>>> plsfix.fix_text('IL Y MARQUÉ…')
'IL Y MARQUÉ…'
依赖项
~20MB
~419K SLoC