栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

拉丁语1至ascii

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拉丁语1至ascii

因此,这是三种方法,或多或少都由其他答案给出或建议:

# -*- coding: utf-8 -*-import precsimport unipredatax = u"Wikipédia, le projet d’encyclopédie"xtd = {ord(u'’'): u"'", ord(u'é'): u'e', }def asciify(error):    return xtd[ord(error.object[error.start])], error.endprecs.register_error('asciify', asciify)def ae():  return x.enpre('ascii', 'asciify')def ud():  return unipredata.normalize('NFKD', x).enpre('ASCII', 'ignore')def tr():  return x.translate(xtd)if __name__ == '__main__':  print 'or:', x  print 'ae:', ae()  print 'ud:', ud()  print 'tr:', tr()

以main身份运行,它发出:

or: Wikipédia, le projet d’encyclopédieae: Wikipedia, le projet d'encyclopedieud: Wikipedia, le projet dencyclopedietr: Wikipedia, le projet d'encyclopedie

清楚地表明,基于unipredata的方法确实具有不需要翻译图的便利,

xtd
但是不能以自动方式正确翻译所有字符(它适用于重音字母,但不适用于反撇号),因此它还需要一些辅助步骤来显式地处理这些问题(毫无疑问,现在是它的主体了)。

性能也很有趣。在我的装有Mac OS X 10.5和系统Python 2.5的笔记本电脑上,可重复的是:

$ python -mtimeit -s'import a' 'a.ae()'100000 loops, best of 3: 7.5 usec per loop$ python -mtimeit -s'import a' 'a.ud()'100000 loops, best of 3: 3.66 usec per loop$ python -mtimeit -s'import a' 'a.tr()'10000 loops, best of 3: 21.4 usec per loop

translate
出奇地慢(相对于其他方法)。我认为问题在于,对于
translate
案例中的每个字符(大多数不存在)都只检查了dict
,而对于
asciify
方法中存在的仅有的几个字符,则进行了调查。

因此,为了完整起见,这里使用“优化unipredata”方法:

specstd = {ord(u'’'): u"'", }def specials(error):  return specstd.get(ord(error.object[error.start]), u''), error.endprecs.register_error('specials', specials)def bu():  return unipredata.normalize('NFKD', x).enpre('ASCII', 'specials')

这给出了正确的输出,但是:

$ python -mtimeit -s'import a' 'a.bu()'100000 loops, best of 3: 10.7 usec per loop

…速度不再那么好了。因此,如果速度很重要,那么做出完整的

xtd
翻译命令并使用该
asciify
方法无疑是值得的。当每次翻译多花几微秒的时间没什么大不了的时候,您可能
bu
只是为了方便而考虑使用此方法(只需要一个翻译字典即可,希望有一些特殊的字符无法与基础unipredata想法正确地翻译)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号