mozillazg / python-pinyin

汉字转拼音(pypinyin)
https://pypinyin.readthedocs.io
MIT License
4.89k stars 612 forks source link

在汉语和别的语言并存的情况下,能仅处理汉语吗 #16

Closed tiann closed 9 years ago

mozillazg commented 9 years ago

没处理其他语言:

In [3]: pypinyin.lazy_pinyin(u'你好吗にほんごРусский язык')
Out[3]: 
[u'ni',
 u'hao',
 u'ma',
 u'\u306b',
 u'\u307b',
 u'\u3093',
 u'\u3054',
 u'\u0420',
 u'\u0443',
 u'\u0441',
 u'\u0441',
 u'\u043a',
 u'\u0438',
 u'\u0439',
 u' ',
 u'\u044f',
 u'\u0437',
 u'\u044b',
 u'\u043a']

你能举个你需要的结果的例子吗?

tiann commented 9 years ago

In [49]: pypinyin.slug(u"中国人Chinese", errors='replace') Out[49]: u'zhong-guo-ren-C-h-i-n-e-s-e' 我希望得到的结果是 zhong-guo-ren-Chinese 目前我是简单这么处理了: pinyin_title = "".join(map(lambda x: x if ord(x) < 1 << 8 else u"-%s-" % slug(x, errors='ignore'), unicode_title))

mozillazg commented 9 years ago

你应该是没装分词模块吧?推荐安装结巴分词。

In [4]: pypinyin.slug(u"中国人Chinese", errors='replace')
Out[4]: u'zhong-guo-ren-Chinese'

不过其他语言还会有你这个问题:

In [6]: pypinyin.slug(u'你好吗にほんごРусский язык')
Out[6]: u'ni-hao-ma-\u306b-\u307b-\u3093-\u3054-\u0420-\u0443-\u0441-\u0441-\u043a-\u0438-\u0439- -\u044f-\u0437-\u044b-\u043a'
tiann commented 9 years ago

好的,谢谢。 应该是其他的语言也需要分词才能达到这个效果,建议文档提一下这一块。 处理不同的语言用不同的分词方案。