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

在python中使用特定语言环境对字符串进行排序的列表

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

在python中使用特定语言环境对字符串进行排序的列表

Glibc确实支持具有显式状态的语言环境API。这是使用ctypes制作的API的快速包装。

# -*- coding: utf-8import ctypesclass Locale(object):    def __init__(self, locale):        LC_ALL_MASK = 8127        # LC_COLLATE_MASK = 8        self.libc = ctypes.CDLL("libc.so.6")        self.ctx = self.libc.newlocale(LC_ALL_MASK, locale, 0)    def strxfrm(self, src, iteration=1):        size = 3 * iteration * len(src)        dest =  ctypes.create_string_buffer('00' * size)        n = self.libc.strxfrm_l(dest, src, size,  self.ctx)        if n < size: return dest.value        elif iteration<=4: return self.strxfrm(src, iteration+1)        else: raise Exception('max number of iterations trying to increase dest reached')    def __del__(self):        self.libc.freelocale(self.ctx)

和简短的测试

locale1 = Locale('C')locale2 = Locale('mk_MK.UTF-8')a_list = ['а', 'б', 'в', 'ј', 'ќ', 'џ', 'ш']import randomrandom.shuffle(a_list)assert sorted(a_list, key=locale1.strxfrm) == ['а', 'б', 'в', 'ш', 'ј', 'ќ', 'џ']assert sorted(a_list, key=locale2.strxfrm) == ['а', 'б', 'в', 'ј', 'ќ', 'џ', 'ш']

剩下要做的就是实现所有语言环境功能,支持python unipre字符串(我猜是wchar *函数),并自动导入包含文件定义或其他内容



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

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

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