2012-09-24 4 views
1

나는 프로그램에서 입력 한 문자열과 파일의 문자열을 비교할 때 문제가 있습니다. 그러나 디코드 ('utf-8')를 사용하면 동등하지만 상관 없습니다. . 내가 읽어보십시오 파일 저장 방법파이썬에서의 인코딩

final = open("info", 'r') 
exported = open("final",'w') 
lines = final.readlines() 
for line in lines: 
    if line == "Wykształcenie i praca": #error 
    print "ok" 

과 : 여기 코드는 - -

comm_p = bs4.BeautifulSoup(comm) 
comm_f.write(comm_p.prettify().encode('utf-8')) 

for string in comm_p.strings: 
     #print repr(string).encode('utf-8') 
     save = string.encode('utf-8') # there is how i save 
     info.write(save) 
     info.write("\n")   

info.close() 

및 파일의 맨 위에 나는 #이 코딩 : UTF-8- -

아이디어가 있으십니까?

+1

추가 '인쇄'%의 R % R "%이다 (선,"Wykształcenie 내가 PRACA ") "비교 라인 바로 앞에 그리고 그것이 무엇이라고 말합니까? – georg

답변

3

이것은 당신이 무엇을해야합니다 :

# -- coding: utf-8 -- 
import io 

with io.open('info', encoding='utf-8') as final: 
    lines = final.readlines() 

for line in lines: 
    if line.strip() == u"Wykształcenie i praca": #error 
     print "ok" 

오른쪽의 파일을 열어야합니다. 인코딩을 사용하고 문자열이 ascii가 아니므로 유니 코드로 표시해야합니다. 문자열을 비교 한에 대한

0

먼저 인코딩에 대한 몇 가지 기본 지식이 필요합니다. This is a good place to start. 지금 당장은 모든 것을 읽을 필요는 없지만 최대한 멀리하려고하십시오.

당신은 UTF-8 인코딩 된 파일을 (아마) 읽고,하지만 당신은 ASCII 파일로 읽는 : 현재의 문제에 대한

. open()은 전환을 수행하지 않습니다.

그래서 당신은 (적어도)해야 할 일 :

  • 사용 codecs.open("info", "r", encoding="utf-8")을 비교를 위해 파일을
  • 사용 유니 코드 문자열을 읽어 : if line.rstrip() == u"Wykształcenie i praca":
+0

나는 Tim"u ""r ""이라고 생각합니까? –

+0

@BurhanKhalid : 아아. 당연하지. –

0

사용 유니 코드

>>> s = u'Wykształcenie i praca' 
>>> s == u'Wykształcenie i praca' 
True 
>>> 

는 문자열 유니 코드에 오는 현명한 이동 :