问题描述
我已通过 OCR 检测到文本为 ¾、½、¼ 等。我试图在 ¾ 中将值分隔为 3 和 4。 ¾ 被读取为 unicode。在转换为字符串时,确切的值随着不需要的字符而变化。请提出解决此问题的方法。
解决方法
使用 Unicode Normalization Forms 如下:
import unicodedata
print('NFKD')
print(unicodedata.normalize('NFKD','¾,½,¼')) # Fraction Slash
print(unicodedata.normalize('NFKD',¼').replace('⁄','/')) # Solidus
print('NFKC')
print(unicodedata.normalize('NFKC',¼'))
print(unicodedata.normalize('NFKC','/'))
输出:.\SO\67189705.py
NFKD
3⁄4,1⁄2,1⁄4
3/4,1/2,1/4
NFKC
3⁄4,1/4
Form Description
——————————————————————————————————————————
Normalization Form D (NFD) Canonical Decomposition
Normalization Form C (NFC) Canonical Decomposition,followed by Canonical Composition
Normalization Form KD (NFKD) Compatibility Decomposition
Normalization Form KC (NFKC) Compatibility Decomposition,followed by Canonical Composition