1. 程式人生 > >python print中文時遇到的編碼問題

python print中文時遇到的編碼問題

新手在print中文是遇到了很多編碼的問題,總結一下,以後遇到了繼續補充

1、無法執行的問題

import xlrd
x1 = xlrd.open_workbook("E:\\測試\\內部開關整理.xlsx")
print x1.sheet_names()

如上程式碼,簡單寫了三行,但怎麼點選執行都沒反應

解決方法:程式碼新增: # -*- coding:utf-8 -*- 

# -*- coding:utf-8 -*-
import xlrd
x1 = xlrd.open_workbook("E:\\測試\\內部開關整理.xlsx")
print x1.sheet_names()

2、執行報錯

Traceback (most recent call last):
  File "E:\github\python-essay\r_excel.py", line 4, in <module>
    x1 = xlrd.open_workbook("E:\\測試\\內部開關整理.xlsx")
  File "D:\ruanjian1\python\lib\site-packages\xlrd\__init__.py", line 116, in open_workbook
    with open(filename, "rb") as f:
IOError: [Errno 2] No such file or directory: 'E:\\\xe6\xb5\x8b\xe8\xaf\x95\\\xe5\x86\x85\xe9\x83\xa8\xe5\xbc\x80\xe5\x85\xb3\xe6\x95\xb4\xe7\x90\x86.xlsx'

 解決方法:中文需要編碼,目錄帶中文時前面加u,因為python內部是Unicode編碼的,即:

# -*- coding:utf-8 -*-
import xlrd
x1 = xlrd.open_workbook(u"E:\\測試\\內部開關整理.xlsx")
print x1.sheet_names()

3、這次正常執行,但結果打印出來的不是中文

================= RESTART: E:\github\python-essay\r_excel.py =================
[u'\u5a01\u80c1\u68c0\u6d4b\u76f8\u5173', u'DP\u53d8\u91cf\u76f8\u5173', u'VPN\u3001\u8ba4\u8bc1\u76f8\u5173']

繼續想解決方法,list型別不能這樣直接 x1.sheet_names().decode,所以使用下面的形式

使用了  print [x.decode('unicode_escape') for x in x1.sheet_names()]

結果報錯: 編碼不對

Traceback (most recent call last):
  File "E:\github\python-essay\r_excel.py", line 6, in <module>
    print [x.decode('unicode_escape') for x in x1.sheet_names()]
UnicodeEncodeError: 'ascii' 
codec can't encode characters in position 0-5: ordinal not in range(128)

三種解決方法:

1、 print isinstance(x, unicode)   檢視字串是否為Unicode編碼,是使用print x.encode('gb2312'),不是則使用print x.encode('utf-8')

# -*- coding:utf-8 -*-

import xlrd

x1 = xlrd.open_workbook(u"E:\\測試\\內部開關整理.xlsx")
for x in x1.sheet_names():
    print isinstance(x, unicode)
    print x.encode('gb2312')
執行結果:
================= RESTART: E:\github\python-essay\r_excel.py =================
True
威脅檢測相關
True
DP變數相關
True
VPN、認證相關

2、方法1只能遍歷列表再列印,對於python中的list ,可以安裝uniout,pip install uniout

# -*- coding:utf-8 -*-
import xlrd
import uniout
x1 = xlrd.open_workbook(u"E:\\測試\\內部開關整理.xlsx")
print x1.sheet_names()

執行結果:
================= RESTART: E:\github\python-essay\r_excel.py =================
[u'威脅檢測相關', u'DP變數相關', u'VPN、認證相關']

3、還需要去掉u,就結和1/2,這次終於正常了

# -*- coding:utf-8 -*-

import xlrd
import uniout

x1 = xlrd.open_workbook(u"E:\\測試\\內部開關整理.xlsx")
print [x.encode("gb2312") for x in x1.sheet_names()]
執行結果:
================= RESTART: E:\github\python-essay\r_excel.py =================
['威脅檢測相關', 'DP變數相關', 'VPN、認證相關']


相關推薦

python print中文遇到的編碼問題

新手在print中文是遇到了很多編碼的問題,總結一下,以後遇到了繼續補充1、無法執行的問題import xlrd x1 = xlrd.open_workbook("E:\\測試\\內部開關整理.xlsx") print x1.sheet_names()如上程式碼,簡單寫了三行

中文編碼】使用Python處理中文的文字編碼問題

0x00 正文 最近,在處理中文編碼的資料的時候,遇到了一些還是令人頭疼的問題。 亂碼! 亂碼!! 亂碼!!! 稍微整理一下處理過程,順帶著記錄一下解決方案啥的…… 0x01 文字轉碼 最初,拿到很多GB2312(Simplify)編碼的HTM

Python 2.7中使用raw_input輸入中文編碼轉換

python命令列讀取中文後寫入資料庫,嘗試了各種編解碼方法,都不行,自己定義的中文變數是沒問題的,其實就應該在命令列最初的時候進行轉換,後期轉換的方法很多,但是編碼也會多次進行改變,還是根上弄對比較重要。折騰了半天,發現還是最初查到的文章沒有仔細讀,也可能是作者寫的內容比較

python實現中文轉換url編碼的方法

pos true clas url編碼 python 10.10 前端 美的 http 本文實例講述了python實現中文轉換url編碼的方法。分享給大家供大家參考,具體如下: 之前做上傳圖片編輯的時候,文件路勁中出現中文,會變成以下這種格式: http://192

python寫爬蟲編碼問題解決方案

簡單的 set 方式 右擊 html str url -s input   在使用Python寫爬蟲的時候,常常會遇到各種令人抓狂的編碼錯誤問題。下面給出一些簡單的解決編碼錯誤問題的思路,希望對大家有所幫助。   首先,打開你要爬取的網站,右擊查看源碼,查看它指定的編碼是什

python:print列印加u的含義

u:表示unicode字串 不是僅僅是針對中文, 可以針對任何的字串,代表是對字串進行unicode編碼。 一般英文字元在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉換就會出現亂碼。 建議所有編碼方式採用utf8pri

JAVA 需要開啟的url含有中文編碼問題

每次JAVA傳參涉及到中文時,總要被虐,這次雖然最後的解決還是比較簡單的,但為了紀念中間走的彎路還是決定記錄一下~~~ 1、從前臺(jsp)到後臺(java)時傳遞了一箇中文引數:name 此時為防止亂碼,需要編碼成 utf-8(此處也可以編碼成 GBK和g

python中文引起的編碼錯誤解決方法

python檔案中有時加入中文後會出現如下類似錯誤:  SyntaxError: Non-ASCII character '\xe4' in file D:\Anaconda2\envs\labelme\lib\site-packages\labelme\utils2.py

Python 使用requests編碼問題

官網說明: Compliance Requests is intended to be compliant with all relevant specifications and RFCs where that compliance will not cause

洗禮靈魂,修煉python(3)--從一個簡單的print代碼揭露編碼問題,運行原理和語法習慣

比較 編譯 windows 機器 函數 容易 打印字符 出現 無法 前期工作已經準備好後,可以打開IDE編輯器了,你可以選擇python自帶的IDLE,也可以選擇第三方的,這裏我使用pycharm——一個專門為python而生的編譯器 第一個python代碼當然是所有開發語

python連接數據庫編碼問題

import sys pos python編碼 database 連接 dede 方法 not 報錯 python編碼錯誤:UnicodeDecodeError: ‘utf8‘ codec can‘t decode 或者UnicodeDecodeError: ‘ascii‘

Python讀寫txt檔案編碼問題

  這個問題來自於一個小夥伴,他在處理中文資料時需要先把裡面的文字過濾然後分詞,因為裡面有許多符號,不僅是中文標點符號,還有✳,emoji等奇怪的符號。   正常情況下,中文的str經過encode('utf-8')變成bytes,然後bytes經過decode('utf-8')變回中文。   原始檔案是

解決Python print輸出文字顯示 gbk 編碼錯誤

前陣子想爬點東西,結果 sublime 3 一直提示錯誤UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position,在網上一查,發現是 Windows 的控制檯的問題。控制檯的編碼是 GBK,Python 是 U

python print列印編碼問題

print()函式自身有限制,不能完全列印所有的unicode字元。 所以要想列印所有unicode字元,得加下面幾行 import io import sys from urllib import request sys.stdout = io.TextIOWrapper(sys

Python 讀取檔案中unicode編碼轉成中文顯示問題

Python讀取檔案中的字串已經是unicode編碼,如:\u53eb\u6211,需要轉換成中文時有兩種方式 1.使用eval eval("u"+"\'"+unicodestr+"\'") 2.使用decode: str1 = '\u4f60\u

【原創】python encoding中文編碼

看一下python的字元編碼,我琢磨了半天,這個好像沒什麼用啊,無論設定哪種編碼方式,結果都一樣的。 設定方式如下: 在python的lib目錄下site-packages目錄中,新建sitec

python用open()函式開啟.py等文件出現編碼錯誤解決辦法

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 94: illegal multibyte sequence 出現

python 2.7輸出中文字串的編碼問題

http://wolfmaster.iteye.com/blog/638029 為什麼會報錯“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就來研

vscode python print 輸出視窗中文亂碼

一、搭建 python 環境在 VSC 中點選 F1 鍵,彈出控制檯,輸入 ext install介面左側彈出擴充套件窗格,輸入python,確認,開始搜尋下載釋出者為Don Jayamanne 的 Python 外掛(下載過程中不要切換視窗,不要做其他任何操作,否則會中斷下載,下載時間略長,耐心等待)安裝完

Python讀取中文路徑的處理

Python讀取中文路徑時可能會出錯:編碼問題 方法一:路徑拆分單獨編碼 <span style="font-size:14px;"># -*- coding: utf-8 -*- #