Почему read_csv или read_excel не принимают 'r' для необработанного строкового литерала? - PullRequest
0 голосов
/ 05 июля 2018

Я получаю ошибку "файл не найден", когда я использую переменную с необработанным строковым литералом, добавленным ниже. Я считаю, что из-за того, что путь к файлу содержит \ f, который должен быть экранирован, я хочу, чтобы путь считывался как необработанный литерал, поэтому я попытался добавить префикс 'r' в строку пути вручную и назначить его переменной, которую я назвал path, как показано ниже, но это не работает.

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")

Что происходит?

1 Ответ

0 голосов
/ 06 июля 2018

Спасибо @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.

...