阅读带有Pandas的csv文件时,需要在路径名前使用“r”

im9ewurl  于 2022-12-02  发布在  其他
关注(0)|答案(3)|浏览(159)

我是个新手。谁能告诉我为什么在下面的函数中我们在某些情况下要在路径名前使用“r”?:

df = pd.read_csv(r"Path_name")

先谢了

9avjhtql

9avjhtql1#

在Python中,反斜杠用于表示特殊字符。
例如,"hello\nworld"--\n表示换行符。尝试打印它。
Windows上的路径名中往往包含反斜杠,但我们希望它们是真正的反斜杠,而不是特殊字符。
r代表“raw”,会导致字符串中的反斜杠被解释为实际的反斜杠,而不是特殊字符。
例如,r"hello\nworld"的字面意思是字符"hello\nworld"。再次尝试打印它。
更多的信息在Python文档中,搜索这些文档中的问题是一个好主意。
https://docs.python.org/3/tutorial/introduction.html#strings

xuo3flqw

xuo3flqw2#

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

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正确处理构建在不同操作系统上执行代码时将工作的路径:

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

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

nsc4cvqm3#

  • This solution by Denziloe does a perfect job of explaining why r may precede a path string.
  • r'C:\Users\username' works
  • r'C:\Users\username\' does not, because the trailing \ escapes the ' .
  • r'C:\Users\username\' + file , where file = 'test.csv' also won't work
  • Results in SyntaxError: EOL while scanning string literal
  • pandas methods that will read a file, such as pandas.read_csv will accept a str or a pathlib object for a file path.
  • If you need to iterate through a list of file names, you can add them with an f-string .
  • num = 6 , f'I have {num} files' interprets as 'I have 6 files' , is an example of using an 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)

相关问题