2017-03-07 13 views
1

ここで初心者です。私たちは次の関数にパス名の前にいくつかのケースでは「r」を使用しない理由 は、誰かが私に言うことができる?:Pythonで事前パンダでcsvファイルを読むときにパス名の前に 'r'を使用する必要があります

+2

これらの(生の文字列)は、パスにバックスラッシュが含まれている場合、Windows OS上で必要です。それ以外の場合は、バックスラッシュはエスケープ文字として扱われます。したがって、ファイル名に '\ t'と書かれている場合、Windowsはパスセパレータではなくタブ文字として扱います。ファイルパスを指定する別の方法は、スラッシュで行います。 – bernie

+0

生の文字列はパス内のバックスラッシュを処理しますが、末尾のバックスラッシュは正しく処理されません。 'r'c:\ path \ ''ポータブルメソッドは常にスラッシュまたは['os.path']を使用することです(https://docs.python.org/2/library/os.path.html) – EdChum

答えて

7

df = pd.read_csv(r"Path_name") 

おかげで、バックスラッシュは特殊文字を表すために使用されています。

"hello \ nworld" - "\ n"は改行を意味します。印刷してみてください。

Windowsのパス名にはバックスラッシュが付いている傾向があります。しかし、特殊文字ではなく実際のバックスラッシュを意味するようにします。

rは "raw"を表し、文字列のバックスラッシュを特殊文字ではなく実際のバックスラッシュとして解釈します。

r "hello \ nworld"とは文字通り "hello \ nworld"の文字を意味します。繰り返しますが、印刷してみてください。

さらに詳しい情報はPythonのドキュメントにあります。これらの質問を検索することをお勧めします。

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

0

生の文字列は、ほとんどの場合、スラッシュバック処理しますが、:

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

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

をしかし、最後のスラッシュがある場合、それはBORKます:

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上で実行されたときに動作しますパスの構築を処理するためにos.pathを使用するには、完全なパスの文字列を構築スラッシュ:

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

Out[14]: 
'c:/path/' 
関連する問題