如何在 Python 中对 Google App Engine 上的 utf-8 字符串进行排序?
How to sort utf-8 string on Google App Engine in Python?
如何在 Python 中对 Google App Engine 上的 utf-8 字符串进行排序?我正在尝试使用本地,但我认为它不会工作并且支持的语言数量太少。
我正在尝试使用 pyuca
但它太难用了 - 每次重新加载 1MB 以便仅使用 1%% 进行排序。
是否有一些轻量级的纯 python 库或者它在 Google App Engine 中以某种方式受支持。
如果你认为你有好的算法它会通过这个测试(你可以打乱字符串进行测试):
alphabet = u'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż'
欢迎任何建议我会测试它。这个字母是 'pl_pl'/'polish'
.
这是一个纯粹的Python方法:
alphabet = u'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż'
dsort = dict((let, i) for i, let in enumerate(alphabet))
def key_utf8(utf8_string):
s = utf8_string.decode('utf8')
return map(dsort.get, s)
some_list_of_utf8_strings.sort(key=key_utf8)
您可能最好在内部保留 unicode 字符串列表——立即解码 utf8 输入并在需要时在输出时编码回 utf8——但只要因为您很乐意重复支付解码计算 cost/delay,这种纯 Python 方法应该可以在 App Engine 或其他任何地方正常工作。
如果您做遵循只在内部保留unicode
字符串的最佳实践(输入解码,输出需要时编码),那么排序也可以使用 key=lambda s: map(dsort.get, s)
—— 但我个人更喜欢使用命名函数(为了清楚起见)而不是有点愚蠢的 lambda。只是风格问题,真的。
如何在 Python 中对 Google App Engine 上的 utf-8 字符串进行排序?我正在尝试使用本地,但我认为它不会工作并且支持的语言数量太少。
我正在尝试使用 pyuca
但它太难用了 - 每次重新加载 1MB 以便仅使用 1%% 进行排序。
是否有一些轻量级的纯 python 库或者它在 Google App Engine 中以某种方式受支持。
如果你认为你有好的算法它会通过这个测试(你可以打乱字符串进行测试):
alphabet = u'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż'
欢迎任何建议我会测试它。这个字母是 'pl_pl'/'polish'
.
这是一个纯粹的Python方法:
alphabet = u'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż'
dsort = dict((let, i) for i, let in enumerate(alphabet))
def key_utf8(utf8_string):
s = utf8_string.decode('utf8')
return map(dsort.get, s)
some_list_of_utf8_strings.sort(key=key_utf8)
您可能最好在内部保留 unicode 字符串列表——立即解码 utf8 输入并在需要时在输出时编码回 utf8——但只要因为您很乐意重复支付解码计算 cost/delay,这种纯 Python 方法应该可以在 App Engine 或其他任何地方正常工作。
如果您做遵循只在内部保留unicode
字符串的最佳实践(输入解码,输出需要时编码),那么排序也可以使用 key=lambda s: map(dsort.get, s)
—— 但我个人更喜欢使用命名函数(为了清楚起见)而不是有点愚蠢的 lambda。只是风格问题,真的。