with open('result.txt', 'r') as f:
data = f.read()
print 'What type is my data:'
print type(data)
for i in data:
print "what is i:"
print i
print "what type is i"
print type(i)
print i.encode('utf-8')
У меня есть файл со строкой, и я пытаюсь прочитать файл и разделить слова пробела и сохранить их в список. Ниже мой код:Как декодировать Юникод в китайском тексте
Ниже мои сообщения об ошибках:
Кто-то пожалуйста, помогите!
Update:
Я собираюсь описать то, что я пытаюсь сделать в деталях здесь, так что дать людям больше контекста: Цель того, что я пытаюсь сделать, это: 1. Возьмем китайский текст и разбить его на предложения с обнаружением основных конечных пунктуаций. 2. Возьмите каждое предложение и используйте инструмент jieba для обозначения символов в значащие слова. Например, два китайских символа 學, 生, будут объединены вместе, чтобы создать токен «學生» (что означает ученик). 3. Сохраните все токены из предложения в список. Таким образом, окончательный список будет иметь несколько списков внутри, поскольку в абзаце есть несколько предложений.
# coding: utf-8
#encoding=utf-8
import jieba
cutlist = "。!?".decode('utf-8')
test = "【明報專訊】「吉野家」and Peter from US因被誤傳採用日本福島米而要報警澄清,並自爆用內地黑龍江米,日本料理食材來源惹關注。本報以顧客身分向6間日式食店查詢白米產地,其中出售逾200元日式豬扒飯套餐的「勝博殿日式炸豬排」也選用中國大連米,誤以為該店用日本米的食客稱「要諗吓會否再幫襯」,亦有食客稱「好食就得」;壽司店「板長」店員稱採用香港米,公關其後澄清來源地是澳洲,即與平價壽司店「爭鮮」一樣。有飲食界人士稱,雖然日本米較貴、品質較佳,但內地米品質亦有保證。"
#FindToken check whether the character has the ending punctuation
def FindToken(cutlist, char):
if char in cutlist:
return True
else:
return False
«»»
вырезать проверить каждый элемент в списке строк, если элемент не окончание пунктуации, это сохранит его во временный список под названием линии. Когда встречается конечная пунктуация, он сохраняет полное предложение, которое было собрано в строке списка, в окончательный список. «» «
def cut(cutlist,test):
l = []
line = []
final = []
„“»
проверку каждого элемента в списке строк, если элемент не заканчивается punchuation, он сохранит его во временный список под названием линии. Когда встречается финальная перфузия, она сохраняет полное предложение, которое было собрано в строке списка, в окончательный список. «»»
for i in test:
if i == ' ':
line.append(i)
elif FindToken(cutlist,i):
line.append(i)
l.append(''.join(line))
line = []
else:
line.append(i)
temp = []
#This part iterate each complete sentence and then group characters according to its context.
for i in l:
#This is the function that break down a sentence of characters and group them into phrases
process = list(jieba.cut(i, cut_all=False))
#This is puting all the tokenized character phrases of a sentence into a list. Each sentence
#belong to one list.
for j in process:
temp.append(j.encode('utf-8'))
#temp.append(j)
print temp
final.append(temp)
temp = []
return final
cut(list(cutlist),list(test.decode('utf-8')))
Вот моя проблема, когда я вывожу мой окончательный список, он дает мне список следующий результат:
[u'\u3010', u'\u660e\u5831', u'\u5c08\u8a0a', u'\u3011', u'\u300c', u'\u5409\u91ce\u5bb6', u'\u300d', u'and', u' ', u'Peter', u' ', u'from', u' ', u'US', u'\u56e0', u'\u88ab', u'\u8aa4\u50b3', u'\u63a1\u7528', u'\u65e5\u672c', u'\u798f\u5cf6', u'\u7c73', u'\u800c', u'\u8981', u'\u5831\u8b66', u'\u6f84\u6e05', u'\uff0c', u'\u4e26', u'\u81ea\u7206', u'\u7528\u5167', u'\u5730', u'\u9ed1\u9f8d', u'\u6c5f\u7c73', u'\uff0c', u'\u65e5\u672c\u6599\u7406', u'\u98df\u6750', u'\u4f86\u6e90', u'\u60f9', u'\u95dc\u6ce8', u'\u3002']
Как я могу превратить список юникода в нормальный строка?
Несвязанные: включают сообщение об ошибке как текст вместо изображения. Это может помочь другим людям с той же ошибкой, чтобы найти вопрос. – jfs
Ограничьте свои вопросы по одной проблеме * на вопрос, например, вы должны спросить: «Как конвертировать' [u '\ u3010', u '\ u660e \ u5831 '] 'к« нормальной »строке» * в качестве отдельного вопроса. [Я уже дал подсказку для решения] (http://stackoverflow.com/questions/33294213/how-to-decode-unicode-in-a-chinese-text/33294804#comment54415565_33306456) - узнайте разницу между 'print [u '\ u3010', u '\ u660e \ u5831']' и 'print" ".join ([u '\ u3010', u '\ u660e \ u5831'])' – jfs
Вот очень хороший учебник который устраняет все ваши путаницы.http: //www.pgbovine.net/unicode-python.htm – Martian2049