作者garywine1201 (那是啥)
看板Python
标题Re: [问题] 如何让输入的字串以Big5表示?
时间Thu Jul 24 20:54:04 2008
※ 引述《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)
1F:推 Lucemia:建议直接将字串转成 unicode物件後再做比较 07/24 21:07
2F:→ Lucemia:先将原字串做解码 能够验证原字串真的是预定的编码 07/24 21:09
3F:推 yungyuc:DIP 那一段其实很有用,可以省你很多时间 07/24 21:37