gpt4 book ai didi

python - 处理django查询中的外来字符

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:07 25 4
gpt4 key购买 nike

我正在搜索从 GeoNames.com 导入的城市名称。一些城市的名称中带有国际字符。例如,“Istanbul”在数据库中实际上是“İstanbul”。

当人们搜索“ Istanbul 尔”时, Istanbul 尔不会出现。

有没有一种方法可以将过滤器或解码器添加到知道 İstanbul = Istanbul 的搜索中

目前,它是:

cities = City.objects.filter(name__icontains=query)

最佳答案

Unidecode将帮助您解决此问题的某种形式。 Unidecode 会将非 ascii 字符转换为 ascii,例如:

>>> from unidecode import unidecode
>>> unidecode(u"İstanbul")
'Istanbul'

您可以通过分解 unicode 字符并删除组合变音符号来实现类似的效果。这种技术的问题是某些字符不可分解。因此,虽然“ö”将分解为“o”和变音符号,但“Ł”(左笔画)将保持不变。 Unidecode 成功地将“Ł”翻译成“L”。

但 Undeicode 并不能解决您所有的问题;城市可以有不同的名字,或者这些名字可以有不同的写法。比如在美国我们称中国的首都为“Beijing”,但我们习惯称它为“Peking”(瑞典语仍然叫“Peking”),将它的名字翻译成unidecode给了我们别的东西:

>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '

最好的解决方案是使用特定语言的名称列表,而不是使用城市的实际名称。

关于python - 处理django查询中的外来字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8967789/

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