簡體   English   中英

不能在Python中的中文字符串中逐字符打印

[英]can't print character by character in a Chinese string in Python

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

結果如下:

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


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

如果我使用“打印文本”,“text”會打印出來。 但是兩種嘗試逐字符打印的方法都失敗了。

發生了什么?

您需要先將從文件讀取的數據解碼為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,
...     
地 藏 菩 薩 本 願 經 卷 上   忉 利 天 宮 神 通 品 第 一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM