当前位置: 首页 > 知识库问答 >
问题:

UnicodeDecodeError:“charmap”编解码器无法解码位置7458中的字节0x83:字符映射到

嵇永望
2023-03-14

我正在尝试使用CSV模块打开文件,但我收到了此错误。

return codecs.charmap_decode(input,self.errors,decoding_table)[0]UnicodeDecodeError:'charmap'编解码器无法解码7458位置的字节0x83:字符映射到

我检查了文件,文件编码是UTF-8...下面是我的代码。错误在第63行

import csv
import xml.etree.ElementTree as ET
import xml.dom.minidom as PT
import traceback

#Global variables
#Variable to hold file name
FILE_NAME = "CustomLabels.labels"
#Variable to hold delimiter
DELIMETE = ','
#Variable to hold root category in xml hierarchy
CUSTOM_LABELS = "CustomLabels"
#Variable to hold sub element in xml
LABELS = "labels"
#Variable to hold argument for CustomLabels category
XMLNS = 'xmlns'
#Variable to hold value for argument for CustomLabels category
URL = "http://soap.sforce.com/2006/04/metadata"
#variable to save file
SAVE_PATH = ""
#variable to hold file to read name
FILE_TO_READ = "CustomLabels.csv"


#Function to open the file with ugly XML
def openFile():
    print('D:M|***| openFile')
    try:
        customLabelsFile = open(FILE_NAME, 'r+',encoding="utf-8")
    except Exception:
        traceback.print_exc()
    return customLabelsFile

#Function to make pretty XML on output
def prettyXMLfile():
    print('D:M|***| prettyXMLfile')
    try:
        dom = PT.parse(FILE_NAME)
        pretty_xml_as_string = dom.toprettyxml()
    except Exception:
        traceback.print_exc()
    return pretty_xml_as_string


#Function to save preetyXML
#para
#xml_file - it is a file from openFile Function
#context - it is a formatted xml
def saveAsPrertyXML(xml_file,context):
    try:
        n = xml_file.write(context)
        xml_file.close()
    except Exception:
        traceback.print_exc()

with open(FILE_TO_READ,encoding="utf-8",errors='ignore',"rb") as csv_file:

    csv_reader = csv.reader(csv_file, encoding='utf-8',delimiter=DELIMETE)
    line_count = 0
    listOfColumnNames = list()
    customLabels = ET.Element(CUSTOM_LABELS)
    customLabels.set(XMLNS,URL)
    try:
        for row in csv_reader:
            if line_count == 0:
                listOfColumnNames.append(row)
                finalListOfColumns = listOfColumnNames[line_count]
                line_count += 1
            else:
                index = 0
                while index < len(finalListOfColumns):
                    if index == 0:
                        labels = ET.SubElement(customLabels, LABELS)
                    ET.SubElement(labels, finalListOfColumns[index]).text = row[index]
                    index += 1
                line_count += 1
    except Exception:
        print(f'The line with error is {line_count}')
        traceback.print_exc()

    tree = ET.ElementTree(customLabels)
    tree.write(FILE_NAME, xml_declaration=True,encoding='utf-8',method="xml")

    uglyXML = openFile()
    prettyXMLasString = prettyXMLfile()
    saveAsPrertyXML(uglyXML,prettyXMLasString)
    print(f'Generator pars {line_count} lines')
    print('XML file saved succesfull')

共有1个答案

宁卓
2023-03-14

好吧,我知道哪里出了问题

它应该是:

with open(FILE_TO_READ,"rt",encoding="utf-8") as csv_file:

而不是

with open(FILE_TO_READ,"rb+",encoding="utf-8") as csv_file:
 类似资料:
  • 当我使用时,我有这个问题。我使用anaconda和俄罗斯Windows。

  • 问题内容: 我想制作搜索引擎,并按照某些网络中的教程进行操作。我想测试解析html 它得到错误 我在网上看到了一些使用encode()的解决方案。但是我不知道如何在代码中插入encode()函数。谁能帮我? 问题答案: 在Python 3中,文件会以文本(解码为Unicode)的形式为您打开。您无需告诉BeautifulSoup要解码的编解码器。 如果数据解码失败,那是因为您没有告诉调用文件读取文

  • 问题内容: 我正在编写一个Python(Python 3.3)程序,以使用POST方法将一些数据发送到网页。通常在调试过程中,我会获取页面结果并使用print()功能将其显示在屏幕上。 代码是这样的: 该方法返回一个bytes编码页面的元素(格式正确的UTF-8文档),直到我停止使用Windows的IDLE GUI并改为使用Windows控制台时,这似乎还可以。返回的页面具有字符(破折号),打印功

  • 问题内容: 我正在尝试制作一个从sqlite3数据库中获取数据的脚本,但是遇到了问题。 数据库中的字段为text类型,并且包含html格式的文本。见下面的文字 尝试提取数据的python代码如下。 是否有人对如何将其打印/写入文件有任何想法。是的,我知道这是打印到stdout的,但是当我尝试写入文件时会出现相同的UnicodeEncodeError。我尝试了文件对象的写入方法和。 问题答案: 当您

  • 我在尝试将字符串编码为UTF-8时遇到了一些问题。我尝试过很多方法,包括使用和,但我得到了错误: UnicodeDecodeError:“ascii”编解码器无法解码位置1中的字节0xef:序号不在范围内(128) 这是我的字符串: 我不知道出了什么问题,知道吗? 编辑:问题是打印字符串不能正确显示。此外,当我试图转换它时,这个错误:

  • 问题内容: 尝试打印从我在python 3.4中使用selenium请求的网站获得的“Á”时,我一直收到UnicodeEncodeError。 我已经在.py文件的顶部定义了 def是这样的: 和例外: 提前致谢 问题答案: 已经知道了。正如在此]答案中指出的那样,编码错误不是来自python,而是来自控制台使用的编码。因此,解决此问题的方法是运行命令(在Windows中): 将编码设置为UTF-