can';t在Python中以中文字符串逐字打印
我的test.txt文件包含以下字符:can';t在Python中以中文字符串逐字打印,python,unicode,Python,Unicode,我的test.txt文件包含以下字符: 地藏菩萨本愿经卷上 忉利天宫神通品第一 我有一个简单的程序: f = open("test.txt") text = f.read() f.close() print text for c in text: print c, print "\n------------" for i in range(len(text)): print text[i], 结果如下: 地藏菩萨本愿经卷上 忉利天宫神通品第一 ------------
地藏菩萨本愿经卷上
忉利天宫神通品第一
我有一个简单的程序:
f = open("test.txt")
text = f.read()
f.close()
print text
for c in text:
print c,
print "\n------------"
for i in range(len(text)):
print text[i],
结果如下:
地藏菩萨本愿经卷上
忉利天宫神通品第一
------------
å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å “ チ ç ¬ ¬ ä ¸ €
å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å “ チ ç ¬ ¬ ä ¸ €
如果我使用“打印文本”,则“文本”可以打印出来。但这两种方法都试图逐个字符打印失败
发生了什么事?您需要先将从文件读取的数据解码为utf-8:
>>> with open('abc1') as f:
text = f.read().decode('utf-8')
...
>>> print text
地藏菩萨本愿经卷上 忉利天宫神通品第一
>>> for x in text:
print x,
...
地 藏 菩 萨 本 愿 经 卷 上 忉 利 天 宫 神 通 品 第 一
或者使用io.open
以所需编码打开文件:
>>> import io
>>> with io.open('abc1', encoding='utf-8') as f:
text = f.read()
>>> for x in text:
print x,
...
地 藏 菩 萨 本 愿 经 卷 上 忉 利 天 宫 神 通 品 第 一
你明白为什么你需要解码吗?