Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试从Python中的.txt文件读取数据时出现Unicode解码错误_Python_Encoding - Fatal编程技术网

尝试从Python中的.txt文件读取数据时出现Unicode解码错误

尝试从Python中的.txt文件读取数据时出现Unicode解码错误,python,encoding,Python,Encoding,我对python脚本非常陌生,但我有一个非常简单的任务,我想执行,但我似乎被困在这一点上。我所要做的就是从.txt文件中读取数据并对其进行解析 我已采取的步骤 我已经从我的学校网站上下载了这个pdf文件,里面有一个课程列表 我只需将pdf文件保存为.txt文件,即可将其转换为.txt文件 谷歌搜索错误,发现这是某种编码问题 使用终端命令文件-I[filename],并返回结果sjsuclassdata.txt:text/plain;字符集=未知-8位 在线使用了许多方法尝试将文件转换为UTF-8

我对python脚本非常陌生,但我有一个非常简单的任务,我想执行,但我似乎被困在这一点上。我所要做的就是从.txt文件中读取数据并对其进行解析

我已采取的步骤

  • 我已经从我的学校网站上下载了这个pdf文件,里面有一个课程列表

  • 我只需将pdf文件保存为.txt文件,即可将其转换为.txt文件
  • 谷歌搜索错误,发现这是某种编码问题
  • 使用终端命令文件-I[filename],并返回结果
    sjsuclassdata.txt:text/plain;字符集=未知-8位
  • 在线使用了许多方法尝试将文件转换为UTF-8编码,但没有成功
  • 我收到的错误消息

    Traceback (most recent call last):
      File "/Users/edward/MyPythonScripts/sjsuClassExtractor.py", line 25, in <module>
        regexMatches = lectureRegex.findall(file.read())
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py", line 321, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 9: invalid continuation byte
    
    回溯(最近一次呼叫最后一次):
    文件“/Users/edward/MyPythonScripts/sjsuClassExtractor.py”,第25行,在
    regexMatches=讲师gex.findall(file.read())
    文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py”,第321行,在decode中
    (结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
    UnicodeDecodeError:“utf-8”编解码器无法解码位置9中的字节0xd0:无效的连续字节
    

    正如你们所看到的,我真的不知道从这里我应该做什么,我已经验证了,如果我读了一个包含相似数据的不同文件,一切都正常

    假设原始文本文件是ANSI编码的(默认情况下带有Acrobat Reader的“另存为文本”选项),此命令将其转换为
    utf-8

    iconv -f "iso-8859-1" -t "utf-8" sjsuclassdata.txt -o sjsuclassdata-utf8.txt
    

    “我通过将pdf文件保存为.txt文件将其转换为.txt文件”您是否尝试使用文本编辑器读取此文件?因为这不是将pdf转换为文本文件的方式。@右腿您可以在Acrobat Reader中打开pdf文件并“另存为”一个.txt文件。它将生成一个正确的(尽管不是UTF-8编码的)文本文件。注意OP是如何说“另存为”而不是“重命名”的。@Selcuk哦,糟糕,我把它理解为“从网络另存为.txt”。你知道,如果我这么说,那是因为我看到很多人认为重命名等于转换…嗨,谢谢,当我在终端中运行上面的程序时,它似乎做了一秒钟的事情,然后返回
    iconv:-o:没有这样的文件或目录iconv:sjsuclassdata-utf8.txt:没有这样的文件或目录
    @EdwardLim,看起来您平台的iconv没有
    -o
    参数。在这种情况下,您可以使用
    iconv-f“iso-8859-1”-t“utf-8”sjsuclassdata.txt>sjsuclassdata-utf8.txt