2017-09-19 30 views
-2

編集された質問: パスの文字列をウィンドウからコピー貼り付けして(バックスラッシュで)コピーし、前方スラッシュを含む文字列を返すPython関数を記述していますPythonをパスとして使用します。文字列のバックスラッシュにバックスラッシュを代入する

def back2forwardSlash(backSlash_string):  
    return backSlash_string.replace('\\', '/') 

まだ不十分である何ということです:問題はColdspeedへ おかげで、私は今、ソートのトリックはない機能を持っている... \ nは、\ bのように、バックラッシュや他の文字の組み合わせで発生します文字列の前にrという名前の関数を呼び出す必要があります。fileNamePath = back2forwardSlash(r'C:\Users\Dropbox\netCFD4\b30.137.nc')これは、文字列に貼り付ける代わりに関数に変数を渡すのを防ぎます。あるいは、少なくとも、私はそれに対する解決策がないと思う。

+1

あなたは 'backSlash_string.replace( '\\'、 '/')'を試しましたか? – GPhilo

+0

このアドバイスに従ってください:https://stackoverflow.com/a/26867674/4528269 –

答えて

1

The pythonic way of doing this would be using string.replace

def foo(string): 
    return string.replace('\\', '/') 

さらに、あなたのエラーの原因は、バックスラッシュが彼らの表現から異なって解釈されている文字のグループであるエスケープシーケンスの開始とすることができるということです。これは、シーケンス\bが2つの別個の文字ではなく、単一の文字\bまたは\x08であることを意味します。だから、あなたはあなたの関数に生の文字列を渡したいでしょう:

print(foo(r'C:\Users\Dropbox\netCFD4\b30.137.nc')) 

生の文字列は、文字通りのバックスラッシュを扱います。代わりに、すべてのバックスラッシュをエスケープすることです。

+0

ありがとうございました。 replaceメソッドはかなりうまくいきますが、あなたが提案したように、引数文字列の前に 'r'をつけて関数を呼び出すだけで問題は実際に解決されます。これは変数で関数を渡すことはできませんが、 'r'の後に手動で文字列を貼り付けて生のままにする必要があるため、部分的に満足できるものです。少なくとも、私は解決策がないと思う。 – Pauli

+0

@Pauli文字列がこのように入っている場合、ソースに問題があります。また、変数を生の文字列にする実際の方法はありません... –

関連する問題