gpt4 book ai didi

python - 将十六进制字符(连字)转换为utf-8字符

转载 作者:太空狗 更新时间:2023-10-29 22:23:31 24 4
gpt4 key购买 nike

我有一个从 pdf 文件转换而来的文本内容。文本中有一些不需要的字符,我想将它们转换为 utf-8 字符。

例如; “人工免疫系统”的转换类似于“人工免疫系统”。 fi 像一个字符一样转换,我使用 gdex 了解字符的 ascii 值,但我不知道如何替换它具有所有内容的真正值(value)。

最佳答案

我猜你看到的是 ligatures — 专业字体具有将几个单独的字符组合成一个(更好看的)字形的字形。因此,该字体没有将“f”和“i”写成两个字形,而是只有一个“fi”字形。比较“fi”(两个字母)和“fi”(单个字形)。

在 Python 中,您可以使用 unicodedata module操纵晚期 Unicode 文本。您还可以利用转换为 NFKD 标准形式来拆分连字:

>>> import unicodedata
>>> unicodedata.name(u'\uFB01')
'LATIN SMALL LIGATURE FI'
>>> unicodedata.normalize("NFKD", u'Arti\uFB01cial Immune System')
u'Artificial Immune System'

因此,使用 NFKD 规范化字符串应该对您有所帮助。如果您发现这样拆分太多,那么我最好的建议是为您要拆分的连字制作一个小型映射表并手动替换连字:

>>> ligatures = {0xFB00: u'ff', 0xFB01: u'fi'}
>>> u'Arti\uFB01cial Immune System'.translate(ligatures)
u'Artificial Immune System'

引用Wikipedia article得到 list of ligatures in Unicode .

关于python - 将十六进制字符(连字)转换为utf-8字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com