无法在Python中以中文字符串逐字符打印

2024-10-01 00:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的测试.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],

结果如下:

地藏菩萨本愿经卷上
忉利天宫神通品第一
------------ 
å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š 
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å “ チ ç ¬ ¬ ä ¸ € 


å œ ° è — マ è マ © è ミ ¨ æ œ ¬ æ „ ¿ ç » マ å ヘ · ä ¸ Š 
å ¿ ‰ å ˆ © å ¤ © å ® « ç ¥ ž é € š å “ チ ç ¬ ¬ ä ¸ €

如果我用“打印文本”的话,“文本”可以打印出来。但这两种方法都试图逐字符打印失败。你知道吗

发生什么事了?你知道吗


Tags: 文件textintest文本程序txtfor
1条回答
网友
1楼 · 发布于 2024-10-01 00:20:52

您需要先将从文件读取的数据解码为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,
...     
地 藏 菩 萨 本 愿 经 卷 上   忉 利 天 宫 神 通 品 第 一

相关问题 更多 >