0
私たちはこのサイトここhttps://pypi.python.org/pypi/datrieのpython datrieは、中国のUnicode文字列の挿入エラー
import string
import datrie
import re
import codecs
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdin = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
sys.stderr = codecs.getwriter('utf-8')(sys.stderr)
trie = datrie.Trie(ranges = [(u'\u0000', u'\u9FFF')])
n = 0
dict = {}
for line in sys.stdin:
line = line.strip('\r\n')
#line = line.decode('utf8','ignore')
dict[line] = True
print "dict load over: %d" % (len(dict))
print >>sys.stderr, "insert"
for str,value in dict.iteritems():
trie[str] = True
if str not in trie:
#print str.encode('utf8','ignore')
print >> sys.stderr, str
print >> sys.stderr, repr(str)
print "trie load over: %d" % (len(trie))
からダウンロードしたPython用datrieパッケージを使用しようとしているが、出力サンプルの言葉は明らかに を挿入した後トライで見つけることができないの範囲であります有効なユニコードワード。
颖礼仿古烟盒折扣
u'\u9896\u793c\u4eff\u53e4\u70df\u76d2\u6298\u6263'
これは 'datrie'のバグのようです。私は問題[ここ](https://github.com/kmike/datrie/issues/30)を提出しました。 –
はい、それはそのバグです。リンクを訪問しない人のために、ライブラリは256より大きなサイズのアルファベットの範囲をサポートしていません。 文字列を2回挿入しようとすると、もっと面白いことになります。 (はい、これは魔法です。) – Smylic