2014-06-24 8 views
0

여러분 안녕하십니까.python - 비 ASCII 문자를 특정 문자로 변환

입력란에는 iso-8859-1 html 파일이 있고 ASCII가 아닌 문자 대신 html 엔티티가 있습니다. 이는 깔끔합니다. 한 문자 만 제외하고 - (00C9 유니 코드 코드 포인트, 표시되지 않는 경우). 나는 그것을 "oe"로 바꾸고 싶다.

는 이미 의 iconv -f ISO-8859-1 -t 아스키 // 음역하여

를 시도했지만 문제가있는 문자를 찢고 그 자리에 아무것도 넣어 나던.

파이썬 2.7에서 작동하고 디코드, 인코딩, 코덱 등 여러 가지를 시도했지만 어디에도 가지 않았습니다. 내가 "아스키 코덱 캔트 인코딩 문자 유 x9c \"오류가

i=0 
for file in os.listdir(dir_in): 
i+=1 
file=codecs.open(dir_in+file,"r","iso-8859-1") 
out=codecs.open(dir_out+str(i)+".html","w","utf-8") 
    for line in file: 
      #at this point the type of line is "unicode" 
    line=line.decode("iso-8859-1",errors="replace") 
      out.write(line) 
file.close 
out.close 

(I 문제가 제대로 들여 쓰기 표시를하고있다하지만이 부분은 괜찮 당신을 확신) : 다음은이 시점에서 내 코드입니다. 내가 적절하게 디코딩을 사용하는지 잘 모르겠습니다.

나는 또한 시도 : 날 수 있습니다

line=unicode(line, errors="replace") 

을 (그것 같아요 어떻게해야 무엇 인) 교체없이 문자를 제거한다

line=unicode(line) 

"형식 오류 : 디코딩 유니 코드 지원되지 않습니다. " 나는 이미"유니 코드 "에 유니 코드를 부여하지 않기 때문에이 두 가지 작업을 수행하지 않았다고 가정합니다.

bash 나 perl에서도 간단한 방법을 사용하면 관심이 있지만, python 3을 사용할 수 없으므로 서버에서 지원하지 않습니다.

고맙습니다.

답변

1

이 수하면 해당 단지 replace 문자 사전을 작성하려고하는가? :

line = line.replace(u"\x9c", "oe") 
+0

O-좋아 그냥 내가이 처음 시도 확신 때문에 충분히 잠을 didnt가 가정 해 봅시다. 어쨌든, 이것은 잘 작동합니다! 고마워요! –

+0

@PetitLama 좋아요! 원할 경우 [내 대답 수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)을 통해 문제를 해결 된 것으로 표시 할 수 있습니다. – dano

+0

문제를 해결 방법으로 표시하는 방법을 궁금해 할 때 감사합니다. 그것이 내가 도움이되는 대답이다. –