【问题标题】:How to load CSV file in Jupyter Notebook?如何在 Jupyter Notebook 中加载 CSV 文件?
【发布时间】:2019-03-17 17:06:34
【问题描述】:

我是新手,正在学习机器学习。我偶然发现了我在网上找到的一个教程,我想让这个程序工作,这样我会得到更好的理解。但是,我在将 CSV 文件加载到 Jupyter Notebook 时遇到问题。

我收到此错误:

File "<ipython-input-2-70e07fb5b537>", line 2
    student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention- 
system\student-data.csv")
                          ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in 
position 2-3: truncated \UXXXXXXXX escape

这里是代码:

我遵循了有关此错误的在线教程,但没有一个有效。有谁知道如何修理它?

第三次尝试使用 r"path"

我也尝试过 "\" 和 utf-8,但都没有成功。

我正在使用最新版本的 Anaconda Windows 7的 Python 3.7

【问题讨论】:

标签: python python-3.x jupyter-notebook


【解决方案1】:

为您的 Windows 路径使用原始字符串表示法。在 python 中,'\' 在 python 中是有意义的。尝试改用这样的字符串 r"path":

student_data = pd.read_csv(r"C:\Users\xxxx\Desktop\student-intervention- system\student-data.csv")

如果不行,试试这个方法:

import os

path = os.path.join('c:' + os.sep, 'Users', 'xxxx', 'Desktop', 'student-intervention-system', 'student-data.csv')
student_data = pd.read_csv(path)

【讨论】:

  • 嗨。试过了。扫描字符串文字时出现错误 SyntaxError: EOL
【解决方案2】:

要么将所有反斜杠 \ 替换为正斜杠 /,要么在文件路径字符串之前放置 r 以避免此错误。 这不是你的文件夹名称太长的问题。


正如 Bohun Mielecki 所说,在 Windows 中通常用于表示文件结构的 \ 字符在写入字符串时具有不同的功能。

来自 Python3 文档:反斜杠 \ 字符用于转义具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。

这对你的陈述有什么特别影响的是那一行

student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention- 
system\student-data.csv")

\Users 匹配转义序列\Uxxxxxxxx,其中xxxxxxxx 指的是Character with 32-bit hex value xxxxxxxx。因此,Python 尝试查找 32 位十六进制值。但是,由于 Users 中的 -sers 与 xxxxxxxx 格式不匹配,您会收到错误消息:

SyntaxError: (unicode error) 'unicodeescape' 编解码器无法解码字节 位置 2-3:截断 \UXXXXXXXX 转义


您的代码现在可以工作的原因是您在'C:\Users\xxxx\Desktop\project\student-data.csv' 前面放置了一个r。这告诉 python 不要像通常那样处理反斜杠字符 / 并按原样读取整个字符串。

我希望这可以帮助您更好地了解您的问题。如果您需要更多说明,请告诉我。

来源:Python 3 Documentation

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。我尝试用“Latin-1”对其进行编码,它对我有用。

        autos = pd.read_csv('filename',encoding = "Latin-1")
    

    【讨论】:

      【解决方案4】:

      试试这个student_data = pd.read_csv("C:/Users/xxxx/Desktop/student-intervention- system/student-data.csv")。

      替换该代码中的反斜杠对您有用。

      【讨论】:

        【解决方案5】:

        您可能有一个带反斜杠的文件名...尝试使用两个反冲而不是一个反冲写入路径。

        student_data = pd.read_csv("C:\\Users\\xxxx\\Desktop\\student-intervention-system\\student-data.csv")
        

        【讨论】:

          【解决方案6】:

          尝试将 \ 更改为 /: -

          import pandas as pd
          student_data = pd.read_csv("C:/Users/xxxx/Desktop/student-intervention- 
          system/student-data.csv")
          print(student data)
          

          或

          import pandas as pd
          
          student_data = pd.read_csv("C:/Users/xxxx/Desktop/student-intervention- system/student-data.csv"r)
          
          print(student data)
          

          【讨论】:

            【解决方案7】:

            试试

            pd.read_csv('file_name',encoding = "utf-8")
            

            【讨论】:

            • 你能分享更新的代码和错误吗?您可以分享“student-data.csv”或其中的一部分吗?
            【解决方案8】:

            我发现了问题。问题是我的文件夹名称真的很长。我将文件夹名称更改为“项目”,现在终于加载了数据!傻!

            【讨论】:

              【解决方案9】:

              请打开记事本,将 csv 格式的数据写入文件并选择“另存为”以将文件保存为 .csv 格式。 例如。火车.csv

              使用此文件,确保在 python 编码期间为上述保存的 CSV 文件正确提及相同的路径。

              Import pandas as pd
              df=pd.read_csv('C:/your_path/Train.csv')
              

              我见过有人使用现有的 .txt/其他格式文件通过重命名将其格式转换为 .csv。实际上除了更改文件名之外什么也没做。它根本不会变成 CSV 文件。 希望这可以帮助。 ??

              【讨论】:

                【解决方案10】:

                一般情况下,如果文件路径中有空格,就会出现这种错误... df=pd.read_csv('/home/jovyan/binder/肾病.csv') 上面的命令会产生一个错误,当它出现时会得到解决 df=pd.read_csv('/home/jovyan/binder/kidney_disease.csv') 用下划线替换空格

                【讨论】:

                • 考虑到提问者对她自己问题的回答,这种做法是有道理的。你在她的原始代码中看到这个错误了吗?
                【解决方案11】:

                首先,这与 Jupyter 无关。这是一个纯 Python 问题!

                在 Python 中,与大多数语言一样,反斜杠是字符串中的特殊(转义)字符,例如 "foo\"bar" 是字符串 foo"bar,不会导致语法错误。此外,"foo\nbar" 是字符串 foo 和 bar,中间有一个换行符。还有更多的逃脱。

                在您的情况下,路径中\ 的含义是字面意思,即您实际上希望字符串中出现反斜杠。

                一种选择是使用另一个反斜杠来转义反斜杠本身:"foo\\bar" 相当于字符串 foo\bar。但是,在您的情况下,您有其中几个,因此为了便于阅读,您可能需要打开“原始字符串模式”,它会禁用(几乎所有)转义:

                r"foo\bar\baz\quux\etc"
                

                会产生

                foo\bar\baz\quuz\etc
                

                不过,就编程风格而言,如果您希望代码可移植,最好使用os.path.join,它知道您的操作系统/平台的正确路径分隔符:

                In [1]: import os.path
                
                In [2]: os.path.join("foo", "bar", "baz")
                Out[2]: 'foo/bar/baz'
                

                在 Windows 上,这将产生 foo\bar\baz。

                【讨论】:

                  【解决方案12】:

                  将熊猫导入为 pd data=pd.read_csv("C:\Users\ss\Desktop\file 或 csv 文件名.csv") 只需将csv文件放在桌面上

                  【讨论】:

                  • 欢迎来到 SO。如果您可以扩展答案以包含更多信息,那将非常有用。如果不提供支持性详细信息,您的答案可能会被否决。
                  猜你喜欢
                  • 2020-06-09
                  • 2020-11-30
                  • 2019-11-16
                  • 2021-11-15
                  • 2020-01-30
                  • 2019-05-09
                  • 1970-01-01
                  • 2020-09-09
                  • 2021-02-23
                  相关资源
                  最近更新 更多