python下将中文拼音的韵母声调转换为英文

在提取中文的拼音时,发现 拼音中带声调的,而在业务中又只能输入英文进行查询,例如如果数据存成这样的这样的

POST test/type
{
  "name": "ǒě"
}  

而根据用户的输入去模糊匹配查找,是这样写的

GET test/_search
{
  "query": {
    "query_string": {
      "default_field": "name",
      "query": "*e*"
    }
  }
}

结果查询结果如下

{
  "took" : 32,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

所以在保存拼音数据的时候,需要单独将带声调的拼音转化成纯英文字符,便于后面的查找。

在解决带声调的拼音时,查到python 标准库下有 unicodedata 这个可以解决 点击查看unicodedata

总的来说,你看到的所有字符在底层都有其编码形式,然后拿到标准化的字符串后将其以ascii编码后去去掉了声调,最后转变成字符串就行了

unicodedata.normalize('NFKD', 'ǒě').encode('ascii','ignore').decode('utf-8')

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容