【问题标题】:Why wont read_csv or read_excel take the 'r' for raw string literal?为什么 read_csv 或 read_excel 不将 'r' 用作原始字符串文字?
【发布时间】:2018-12-13 12:28:54
【问题描述】:

当我使用下面附加原始字符串文字的变量时,我得到一个文件未找到错误,我相信因为文件路径包含需要转义的 \f,我希望将路径读取为原始文字,所以尝试了手动将'r'前缀添加到路径字符串并将其分配给我称为路径的变量,如下所示,但它不起作用。

import pandas as pd
path = raw_input("Enter location of data file:")
path = str('r"'+  str(path[1:]))
print path

try:
    df=pd.read_excel(path)
except:
    df= pd.read_csv(path)
df.head 

打印 r"C:\Users\faulknerdw\Anaconda\Progs\GW_data.csv"

但如果我直接输入看起来完全相同的内容,它就会起作用。例如

df=pd.read_excel(r"C:\Users\faulknerdw\Anaconda\Progs\GW_data.csv")

df= pd.read_csv(r"C:\Users\faulknerdw\Anaconda\Progs\GW_data.csv")

发生了什么事?

【问题讨论】:

  • 注意:我希望文件路径的用户输入带有引号,例如“C:\Users\...”作为 Windows 中“复制为路径”命令的结果。
  • r 不是字符串的一部分。它只是一条指令,让 Python 解释器以特殊方式处理 `\`。
  • @DyZ 谢谢,是的,我知道,问题是,如何制定从“raw_input”创建的文件路径变量,以便 read_csv 将其识别为字符串文字文件路径?
  • 你不需要path = str('r"'+ str(path[1:]))这一行。简单的拿出来。其余的应该可以工作。
  • @DyZ 不幸的是,它不起作用,因为我的文件路径包含需要转义的 \f(因此尝试使用 'r' 前缀将其读取为原始文件)。

标签: python pandas path filepath


【解决方案1】:

感谢@DrawT 的回答:https://stackoverflow.com/a/35920186/6108107

path = path.replace('\\','/') # replaces backslashes with forward slashes
path = path[1:len(path)-1] # to remove quote marks

将反斜杠替换为仍被识别为归档路径但不需要转义的正斜杠,然后清除引号。

然后,pandas 将接受该文件路径变量作为 excel 文件或 csv 的位置。

【讨论】:

    猜你喜欢
    • 2022-12-24
    • 2011-01-06
    • 2022-10-09
    • 2019-11-04
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多