我有一些ISO-2022-JP编码的文本。
示例:まだ 正式 に 決まっ た わけ で は ない の で 。
根据重新库文档,它可以接受ascii和unicode,所以我尝试将文本转换为unicode,并在单词级别进行剪切:
text.decode('iso-2022-jp')
print(text)
print(re.findall(r"[w']+", text))
然而,这里是我得到的输出类型:
まだ 正式 に 決まっ た わけ で は ない の で 。
['B', 'B', 'B', 'B', 'B', '5', '0', 'B', 'B', 'K', 'B', 'B7h', 'C', 'B', 'B', 'B', 'B', 'o', '1', 'B', 'B', 'G', 'B', 'B', 'O', 'B', 'B', 'J', 'B', 'B', 'N', 'B', 'B', 'G', 'B', 'B', 'B']
我做错了什么?谢谢
您的代码适合我。(Python 3.3.0)
>>> text = "まだ 正式 に 決まっ た わけ で は ない の で 。"
>>> print(text)
まだ 正式 に 決まっ た わけ で は ない の で 。
>>> import re
>>> re.findall(r"[w']+", text)
['まだ', '正式', 'に', '決まっ', 'た', 'わけ', 'で', 'は', 'ない', 'の', 'で']
顺便说一句,你没有将解码后的字符串分配给文本。
text = text.decode('iso-2022-jp')
<小时>更新
若我将文本解码为ascii(丢弃非ascii字符),我会得到以下结果。
>>> re.findall(r"[w']+", text.encode('iso-2022-jp').decode('ascii', 'ignore'))
['B', 'B', 'B', '5', '0', 'B', 'B', 'K', 'B', 'B7h', 'C', 'B', 'B', 'B', 'B', 'o', '1', 'B', 'B', 'G', 'B', 'B', 'O', 'B', 'B', 'J', 'B', 'B', 'N', 'B', 'B', 'G', 'B', 'B', 'B']
看起来你解码/编码不正确。
<小时>更新2
若您从文件中读取文本,则不需要对单个行进行解码。在open()
调用中指定编码。
import re
with open('results', 'r', encoding='iso-2022-jp') as f:
for line in f:
matches = re.findall(r"[w']+", line)
if matches:
print(matches)
小时>小时>