2017-04-10 3 views
0

파이썬 미니 돔 모듈로 XML 파일을 파싱합니다. 파일에 데이터를 쓸 때 Unicode Encode Error: 'ASCII' codec can't encode characters in position 0-3: ordinal not in range(128)과 같은 오류가 발생합니다. 그러나 명령 행에 지문을 완벽하게 출력하십시오. 해결책을 말해주십시오.파일에 데이터를 쓰는 동안 파이썬 반환 오류가 발생했습니다. (파이썬 2.7)

내 XML 파일은 다음과 같습니다

<?xml version="1.0"?> 
    <Feature> 
     <Word Root ="ਨੌਕਰ-ਚਾਕਰ"> 
      <info Inflection ="ਨੌਕਰਾਂ-ਚਾਕਰਾਂ"> 
     <posinfo gender ="Masculine" number ="Plural" case ="Oblique" /> 

       </info> 
     </Word> 
       </Feature> 

내 파이썬 코드는 다음과 같습니다

import sys 

from xml.dom import minidom 

file=open("npu.txt","w+") 
doc = minidom.parse("NPU.xml") 
word = doc.getElementsByTagName("Word") 
for each in word: 
    # print "root"+each.getAttribute("Root") 
    file.write(each.getAttribute("Root")+"\n") 
    hh=each.getElementsByTagName("info") 

    for each1 in hh: 
     # print "inflection"+each1.getAttribute("Inflection") 
     file.write(each1.getAttribute("Inflection")+"\t") 

     vv=each1.getElementsByTagName("posinfo") 
     for each2 in vv: 
      # print each2.getAttribute("gender") 
      # print each2.getAttribute("number") 
      # print each2.getAttribute("case") 
      file.write(each2.getAttribute("gender")+",") 
      file.write(each2.getAttribute("number")+",") 
      file.write(each2.getAttribute("case")) 
     file.write("\n") 
    file.write("--------\n") 

답변

1
encode data while writing- 
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
file=open("npu.txt","w+") 
file.write("ਨੌਕਰ-ਚਾਕਰ") 
+0

시도했지만 작동하지 않습니다. –

+0

위의 헤더 추가 - 작동 –

+1

감사합니다. –

0

문제는 당신이 XML을 구문 분석하는 방식에없는,이 인코딩 문제입니다.

오류는 텍스트 인코딩 (UTF-8)으로 인해 발생합니다. 사용중인 문자가 포함되지 않은 ASCII 문자로 텍스트를 쓰려고합니다.

은 다음과 코덱을 시도 :

import codecs 

file = codecs.open("npu.txt", "w+", "utf-8") 
file.write("ਨੌਕਰ-ਚਾਕਰ".decode('utf-8')) 
file.close() 

편집 : 당신은 또한 UTF-8은 파이썬 소스의 시작 부분에 특별한 코멘트를 # -*- coding: UTF-8 -*- 를 추가로 기본 인코딩을 설정할 수 있습니다

. 기본 인코딩은 ASCII (7 비트)입니다. 파이썬 식별자는 여전히 ASCII 문자로 제한됩니다.

관련 문제