我刚刚开始通过Python2在日语中进行文本聚类。但是,当我基于这些日语单词/术语创建字典时,字典键变成Unicode而不是日语。代码如下:
# load data
allWrdMat10 = pd.read_csv("../../data/allWrdMat10.csv.gz",
encoding='CP932')
## Set X as CSR Sparse Matrix
X = np.array(allWrdMat10)
X = sp.csr_matrix(X)
## create dictionary
dict_index = {t:i for i,t in enumerate(allWrdMat10.columns)}
freqrank = np.array(dict_index.values()).argsort()
X_transform = X[:, freqrank < 1000].transpose().toarray()
allWrdMat10.columns
的结果仍然是日语,如下所示:
Index([u'?', u'.', u'・', u'%', u'0', u'1', u'10月', u'11月', u'12
月', u'1つ',
...
u'瀋陽', u'疆', u'盧', u'籠', u'絆', u'胚', u'諫早', u'趙', u'鉉', u'鎔
基'],dtype='object', length=8655)
但是,dict_index.keys()
的结果为:
[u'u77edu9283',
u'u5efau3066',
u'u4f0a',
u'u5e73u5b89',
u'u6025u9a30',
u'u897fu65e5u672c',
u'u5e03u9663',
...]
有什么办法可以将日语单词/术语保留在字典键中?还是有什么办法可以将Unicodes转换回日语单词/术语?谢谢。
当您向解释器询问表达式的值时,它会计算值,然后输出其repr()
。print
语句(V2(或函数(V3(使用该值的str()
。因此,如果我选择一个有问题的钥匙,然后询问我的解释器的价值是什么,我会得到您所看到的。但是,如果我 print
,我会看到所需的日语字符:
>>> u'u77edu9283'
u'u77edu9283'
>>> print u'u77edu9283'
短銃
因此,您确实拥有所需的值,您只是不明白解释器正在使用不同的表示,保证在ASCII中表示。
您没有在python 2中以u为前缀。unicode_literals import unicode_literals