2

次のような変数のファイル名を取得する最良の方法を探しています。

 a = 'this\is\a\path\to\file'
 print a[-4:]

print a[-4:] で最後の 4 文字を抽出するだけで「ファイル」を取得しようとしていますが、結果は次のようになります。

 ile

print a[-5:] を作成すると、次のようになります。

 ofile

Pythonにはバックスラッシュに問題があると思いますが、エスケープしても役に立ちませんでした。これをどのように解決しますか?私のやり方でやりますか、それとも「\」を右から左に検索して「ファイル」を取得するより効率的な方法はありますか?

4

3 に答える 3

4

\fPython では単一の文字 (フォーム フィード) です。バックスラッシュを 2 倍にしてみてください:

a = 'this\\is\\a\\path\\to\\file'

または、同等に:

a = r'this\is\a\path\to\file'

その後、print a[-4:]印刷されますfile

于 2013-04-20T08:41:36.947 に答える
3
>>> import os
>>> a = 'A/B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A/./B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A\B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A\\B'
>>> os.path.normpath(a)
'A\\B'

[-4:] を使用する代わりに、'A//B'.split(os.path.sep)[-1] を使用することをお勧めします。そうすれば、パスの最後の部分全体を確実に取得できます。os.path.sep は、現在の os でセパレーターを返します。

于 2013-04-20T09:13:18.897 に答える
1
>>> a = r'this\is\a\path\to\file'
>>> print a[-4:]
file
于 2013-04-20T08:42:37.060 に答える