1
Python 2.7を使用し、UTF-8でエンコードされたファイルで簡単なトークン処理をしようとしています。 a
の出力は、tk[0].encode('utf-8')
の後に、unicode
のタイプからstr/byte
に変換されるため、期待されるバイト文字列のようです。私の大きな混乱はなぜb
の出力が空リストですか?私は符号化なしで(.encode('utf-8')
と呼ぶことを意味します)、生のUnicode文字でなければなりません(例えば、1.txt
はUTF-8でエンコードされた中国語の文字ファイルであると思われます)。なぜPython 2.7で自分のコードで出力リストが空になっているのですか?
ソースコード、
import jieba
if __name__ == "__main__":
with open('1.txt', 'r') as content_file:
content = content_file.read()
segment_list = jieba.tokenize(content.decode('utf-8'), mode='search')
if segment_list is None:
print 'segment is None'
else:
a = [tk[0].encode('utf-8') for tk in segment_list]
b = [tk[0] for tk in segment_list]
print a
print b
**出力**、
['\xe4\xb8\x8a\xe6\xb5\xb7', '\xe6\xb5\xb7\xe5\xb8\x82', '\xe4\xb8\x8a\xe6\xb5\xb7\xe5\xb8\x82', '\xe6\xb7\xb1\xe5\x9c\xb3', '\xe6\xb7\xb1\xe5\x9c\xb3\xe5\xb8\x82', '\xe7\xa6\x8f\xe7\x94\xb0', '\xe7\xa6\x8f\xe7\x94\xb0\xe5\x8c\xba', '\xe6\xa2\x85\xe6\x9e\x97', '\xe6\x9e\x97\xe8\xb7\xaf', '\xe6\xa2\x85\xe6\x9e\x97\xe8\xb7\xaf', '\xe4\xb8\x8a\xe6\xb5\xb7', '\xe6\xb5\xb7\xe5\xb8\x82', '\xe6\xb5\xa6\xe4\xb8\x9c', '\xe6\x96\xb0\xe5\x8c\xba', '\xe4\xb8\x8a\xe6\xb5\xb7\xe5\xb8\x82', '\xe4\xb8\x8a\xe6\xb5\xb7\xe5\xb8\x82\xe6\xb5\xa6\xe4\xb8\x9c\xe6\x96\xb0\xe5\x8c\xba', '\xe8\x80\x80\xe5\x8d\x8e', '\xe8\xb7\xaf', '\r\n']
[]
おかげでティム、私はUTF-8でエンコードされたTKが必要な場合は、[0]、私はちょうどTKのための1つのライン '= [TK [0] .encode( 'UTF-8')を使用する必要がありますin segment_list] '? –
それは正しいです。 –
ありがとうTim、あなたの回答を回答としてマークしてください。あなたはそんなに知っている! :) –