在使用pandas读取csv文件时,需要在path-name之前使用'r'

时间:2017-03-07 17:49:52

标签: python pandas

这是一个新手。 有人可以告诉我为什么在以下函数中的路径名之前的某些情况下我们使用'r'?:

df = pd.read_csv(r"Path_name")

提前致谢

3 个答案:

答案 0 :(得分:11)

在Python中,反斜杠用于表示特殊字符。

e.g。 “hello \ nworld” - “\ n”表示换行符。尝试打印它。

Windows上的路径名称往往包含反斜杠。但是我们希望它们意味着实际的反斜杠,而不是特殊字符。

r代表“raw”,会导致字符串中的反斜杠被解释为实际的反斜杠而不是特殊字符。

e.g。 r“hello \ nworld”字面意思是字符“hello \ nworld”。再次尝试打印它。

Python文档中有更多信息,搜索这些问题是个好主意。

https://docs.python.org/3/tutorial/introduction.html#strings

答案 1 :(得分:1)

  • solutionDenziloe可以很好地解释为什么r可能位于路径字符串之前。
    • r'C:\Users\username'有效
    • r'C:\Users\username\'不会,因为结尾的\会逸出'
      • r'C:\Users\username\' + file,其中file = 'test.csv'也不起作用
      • 结果来自SyntaxError: EOL while scanning string literal
  • pandas方法将读取文件,例如pandas.read_csv将接受strpathlib对象作为文件路径。
  • 如果您需要遍历列表,请使用f-string添加文件名。
    • num = 6f'I have {num} files'解释为'I have 6 files',是使用f-string的示例。
import pandas as pd

files = ['test1.csv', 'test2.csv', 'test3.csv']

df_list = list()
for file in files:
    df_list.append(pd.read_csv(rf'C:\Users\username\{file}'))  # path with f-string

df = pd.concat(df_list)

答案 2 :(得分:0)

在大多数情况下,原始字符串将处理反斜杠,例如以下两个示例:

In [11]:
r'c:\path'

Out[11]:
'c:\\path'

但是,如果有一个尾部斜杠,那么它将会中断:

In [12]:
r'c:\path\'

  File "<ipython-input-12-9995c7b1654a>", line 1
    r'c:\path\'
               ^
SyntaxError: EOL while scanning string literal

正斜杠没有这个问题:

In [13]:
r'c:/path/'

Out[13]:
'c:/path/'

安全且可移植的方法是始终使用正斜杠,如果为完整路径构建字符串以使用os.path来正确处理构建在不同操作系统上执行代码时将起作用的路径: / p>

In [14]:
import os
path = 'c:/'
folder = 'path/'
os.path.join(path, folder)

Out[14]:
'c:/path/'