Re: [問題] 如何讓輸入的字串以Big5表示?

看板Python作者 (那是啥)時間17年前 (2008/07/24 20:54), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《yungyuc (酷狗喵千代)》之銘言: : ※ 引述《garywine1201 (那是啥)》之銘言: : : 抱歉,有爬過文 可是對於這個問題還是沒sense : : 我目前開啟了一個文字檔案,是以big5編碼的中文檔 : : 我希望由使用者輸入一個中文字,然後可以從這個檔案搜尋出來 : : 寫法大概是這樣 : : f = open('txtdb.txt','r') : : lines= "\n".join(f) : : a = str(raw_input("word: ")) : : for line in lines: : : if a in line: : : find = True : : print(line) : : 不過不管怎麼輸入,都蒐尋不到 : : 我想可能是因為使用者輸入的值不是Big5的原因 : : 不知道有沒有函式可以幫我把a轉成Big5呢? : : 我試用了unicode()這個函式 不過結果是一樣的 : check http://www.diveintopython.org/xml_processing/unicode.html 謝謝您提供的資料 Dive into Python我有拜讀過了~不過這邊的unicode資料似乎沒什麼幫助 : BTW, 你的程式有錯;lines 不像你所想的是 list,它變成 str 了 : 這樣才對: : f = open("foo", 'r') : a = str(raw_input("word: ")) : for line in f: : print line if line.find(a) >= 0 後來我將程式改成這樣 f = open("txtdb.txt", 'r') #因為windows下預設以Big5輸入,所以我將輸入的值轉成utf8 a = str(raw_input("word: ")).decode('Big5').encode('utf8') for line in f: if line.find(a) >= 0: print line return 0 並把檔案改編為utf-8, 不過還是連一行資料都找不到,不知道問題到底在哪... 感謝您的回答:) 喔對了 我是在windows平台下 使用eclipse + pydev開發的 python為v 2.5 不過在嘗試寫這行 print line if line.find(a) >= 0 的時候會有錯,好像一定要拆開來。所以我就拆開來寫了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.175.134 ※ 編輯: garywine1201 來自: 140.130.175.134 (07/24 20:57)

07/24 21:07, , 1F
建議直接將字串轉成 unicode物件後再做比較
07/24 21:07, 1F

07/24 21:09, , 2F
先將原字串做解碼 能夠驗證原字串真的是預定的編碼
07/24 21:09, 2F

07/24 21:37, , 3F
DIP 那一段其實很有用,可以省你很多時間
07/24 21:37, 3F
文章代碼(AID): #18Y7jjzv (Python)
文章代碼(AID): #18Y7jjzv (Python)