克罗地亚人物和蟒蛇

时间:2014-07-30 14:30:33

标签: python string file utf-8

我做了一个简单的程序,找出文件中是否找到给定的字符串。

a=raw_input('write some string ')
f1=open("croatian.txt",'r')

def check():

    found = False 
    for line in f1:
        if ("%s"%a) in line:
        found=True
    print found


check()

我使用了一些charachters(č,ć,ž,đ,š)(克罗地亚语中的字符),这些字符不能被上面编写的代码识别。例如,如果我写字符串“čokolada”,程序说“False”,虽然在文件中找到了“čokolada”字样。怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

文本可能使用不同的编码。如果文件是UTF-8编码但你在Windows上运行该程序,那几乎可以肯定。您应该将所有内容转换为Unicode,然后进行检查。

转换输入字符串:

a = a.decode(sys.stdin.encoding)

要转换文件,您可以使用codecs打开文件,也可以在阅读时转换每一行。请注意,您只需要一个这些更改!

f1 = codecs.open("croatian.txt", 'r', 'utf-8')

或:

line = line.decode('utf-8')

答案 1 :(得分:0)

可能您正在尝试打开unicode文件(通常采用UTF-8编码)。 由于任何文件都可以使用ASCII读取和解码,因此您没有例外。

使用编解码器打开此类文件:

import codecs
f1 = codecs.open("croatian.txt", "r", "utf-8")

你也可以用更多的pythonic方式重构你的功能:

print 'Found' if any(a in line for line in f1) else 'Not Found'