mozillazg / python-pinyin

汉字转拼音(pypinyin)

Home Page:https://pypinyin.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pypinyin的版本过高会导致 ImportError: cannot import name '_replace_tone2_style_dict_to_default' from 'pypinyin.utils'

1482345547 opened this issue · comments

运行环境

  • 操作系统(Linux/macOS/Windows):
  • Python 版本:
  • pypinyin 版本:

问题描述

问题复现步骤

Author: mozillazg mozillazg101@gmail.com
Author: mozillazg mozillazg101@gmail.com
Date: Sun Jan 23 16:41:25 2022 +0800

修复韵母相关拼音风格在 strict=True 时未按预期只返回拼音标准中定义过的韵母

Fixes #266
diff --git a/pypinyin/utils.py b/pypinyin/utils.py
index 09f5750..e7e3612 100644
--- a/pypinyin/utils.py
+++ b/pypinyin/utils.py
@@ -2,29 +2,27 @@
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
-import re
-
-from pypinyin import phonetic_symbol
-from pypinyin.constants import RE_TONE2
 # 用于向后兼容,TODO: 废弃
 from pypinyin.seg.simpleseg import simple_seg  # noqa
 
 
-def _replace_tone2_style_dict_to_default(string):
-    regex = re.compile(RE_TONE2.pattern.replace('$', ''))
-    d = phonetic_symbol.phonetic_symbol_reverse
-    string = string.replace('ü', 'v').replace('5', '').replace('0', '')
-
-    def _replace(m):
-        s = m.group(0)
-        return d.get(s) or s
-
-    return regex.sub(_replace, string)
-
-

可以改用 https://pypinyin.readthedocs.io/zh_CN/master/contrib.html#pypinyin.contrib.tone_convert.to_tone 这个函数实现同样的功能。

BTW,不建议使用文档中未公开的函数或方法,迭代过程中不保证这些未公开函数或方法的兼容性(可能会被删除或者功能发生变化)

这个问题是在引用另一个包 “phkit” 出现的。

from phkit.chinese import __doc__ as doc_chinese
  File "/home/gho/anaconda3/lib/python3.9/site-packages/phkit/chinese/__init__.py", line 37, in <module>
    from .pinyin import text2pinyin, split_pinyin, change_diao
  File "/home/gho/anaconda3/lib/python3.9/site-packages/phkit/chinese/pinyin.py", line 11, in <module>
    from ..pinyinkit import text2pinyin, split_pinyin, change_diao
  File "/home/gho/anaconda3/lib/python3.9/site-packages/phkit/pinyinkit/__init__.py", line 6, in <module>
    from .core import lazy_pinyin, pinyin, slug, Style, initialize
  File "/home/gho/anaconda3/lib/python3.9/site-packages/phkit/pinyinkit/core.py", line 20, in <module>
    from pypinyin.utils import _replace_tone2_style_dict_to_default
ImportError: cannot import name '_replace_tone2_style_dict_to_default' from 'pypinyin.utils' (/home/gho/anaconda3/lib/python3.9/site-packages/pypinyin/utils.py)