我正在创建一个基于“HTMLParser”的子类来提取html内容。每当我有角色引用,比如
' ' '&' '–' '…'
我想把它们换成英文版的
^{pr2}$把一些简单的字符引用转换成正确的表示的最佳方法是什么?在
我的文本类似于:
Some text goes here&after that, 6:30 pm–8:45pm and maybe
something like …
我想把这个转换成:
Some text goes here & after that, 6:30 pm-8:45pm and maybe
something like ...
你的问题有两部分。最简单的部分是解码HTML实体。最简单的方法是从
HTMLParser
模块中获取这个未记录但长时间稳定的方法:第二部分,将Unicode字符转换成ASCII外观,这是一个棘手的问题。我会尽量保留Unicode中的破折号“-”和类似的排版细节,而不是将它们转换成普通连字符和直引号之类的字符。除非您的应用程序根本无法处理非ASCII字符,否则您应该将它们与所有其他Unicode字符一起保持原样。在
U+2013省略号字符的具体情况可能会有所不同,因为它是一个“兼容性字符”,Unicode中只包含用于与其他编码进行无损往返的字符。最好只需键入三个点,然后让字体的字形组合逻辑精确地计算出如何绘制它。在
如果您只想替换兼容字符(比如这个字符、显式连字、日语全角数字和其他一些奇怪的字符),可以尝试将字符串规范化为正常形式KC:
^{pr2}$(注意:您可能希望保留的其他字符也是兼容字符,包括“²”。)
下一步是将带有变音符号的字母转换成普通字母,这可以通过将其标准化为NFKD来实现,然后它们将所有具有“组合”字符类的字符从字符串中删除。这将给你一个简单的ASCII来表示以前的重音拉丁字母,尽管在某种程度上对许多语言来说并不正确。如果你只关心这些,你可以直接编码成ASCII码:
任何进一步的操作都必须是特别的,因为没有公认的标准可以将字符串向下折叠为ASCII。Windows有一个实现,Lucene(ascifoldingfilter)也是如此。结果变化莫测。在
相关问题 更多 >
编程相关推荐