我做了一个简单的程序,找出文件中是否找到给定的字符串。
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”字样。怎么解决这个问题?
答案 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'