Python 将韩文文本从xml文件提取到csv文件时出现编码错误

Python 将韩文文本从xml文件提取到csv文件时出现编码错误,python,csv,encoding,Python,Csv,Encoding,我必须从几个xml文件中提取信息,其中一些包含韩语信息。该文件具有以下结构: <?xml version="1.0" encoding="UTF-8"?> <Root _ID="999" _Status="Closed"> <Name>Big tech</Name> <LegalName>Big tech Inc.</LegalName> <Comments> 섹터와 지역에 따라 대표적

我必须从几个xml文件中提取信息,其中一些包含韩语信息。该文件具有以下结构:

<?xml version="1.0" encoding="UTF-8"?>
<Root _ID="999" _Status="Closed">
    <Name>Big tech</Name>
    <LegalName>Big tech Inc.</LegalName>
    <Comments> 섹터와 지역에 따라 대표적인 기업과 내재가치 대비 저평가</Comments>
    ....
</Root>
我得到的错误如下:

Traceback (most recent call last):
  File "ET.py", line 226, in <module>
    Company.write('{}; {}; {}\n'.format(name, legalname, comments))
  File "C:\Users\*****\*****\Local\Continuum\anaconda3\lib\encodings
\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position *2-**4:
 character maps to <undefined>
csv会记录此字符,而不是韩语字符:

b'\xec\x84\xb9\xed\x84\xb0\xec\x99\x80 \xec\xa7\x80\xec\x97\xad\xec\x97\x90 \xeb
\x94\xb0\xeb\x9d\xbc \xeb\x8c\x80\xed\x91\x9c\xec\xa0\x81\xec\x9d\xb8 \xea\xb8\x
b0\xec\x97\x85\xea\xb3\xbc \xeb\x82\xb4\xec\x9e\xac\xea\xb0\x80\xec\xb9\x98 \xeb
\x8c\x80\xeb\xb9\x84 \xec\xa0\x80\xed\x8f\x89\xea\xb0\x80'

我已经尝试过comments=comments.encode('utf-8').decode('utf-8')以及所有编码和解码组合(使用utf-8、cp1252、euc_-kr和cp949),但都没有成功,每当我尝试将行添加到csv文件时,我总是会收到以前的错误。当xml不包含韩语字符时,不会出现错误。

Company=open('Company.csv','w',encoding='utf-8')
-您希望在输出文件上有正确的编码。不确定这是否是打印错误,但在
legalname=root.find('legalname')。文本
legalname
应该是
legalname
。当我改变它的工作方式时:Thanky you@snakecharmerb,我原以为OpenFunction在默认情况下会使用utf-8,但现在它工作得很好。@roasty Thanky,这确实是一个打印错误,xml文件和更大的文件以及不同的结构。真正的问题不是像snakecharmerb所说的那样定义输出文件的编码。文本文件的默认编码是调用
comments=comments.encode('utf-8') 
b'\xec\x84\xb9\xed\x84\xb0\xec\x99\x80 \xec\xa7\x80\xec\x97\xad\xec\x97\x90 \xeb
\x94\xb0\xeb\x9d\xbc \xeb\x8c\x80\xed\x91\x9c\xec\xa0\x81\xec\x9d\xb8 \xea\xb8\x
b0\xec\x97\x85\xea\xb3\xbc \xeb\x82\xb4\xec\x9e\xac\xea\xb0\x80\xec\xb9\x98 \xeb
\x8c\x80\xeb\xb9\x84 \xec\xa0\x80\xed\x8f\x89\xea\xb0\x80'