経緯
Windowsのエクスプローラから得られる
'C:\foo\bar'
といったpathをpythonで扱うためには、
'C:\foo\bar'
としなければなりませんが、手入力で修正するのは手間なので
'C:\foo\bar'を渡すと'C:\foo\bar'を返す関数を書きたかったのです。
TODO
- 文字列を1文字ずつリストに解体し、
'\'を含む値に、'\'を加えてインプレースして変更すればよいと考えました。 '\'単体で加算しようとすると'がエスケープされてしまうので'\'- しかし
'C:\foo\bar'が含むのは'\'そのものではなく「エスケープされたf」と「エスケープされたb」です。 - また、当然ながら必ずしも「エスケープされたf」…等ではなく「エスケープされた任意の文字」を検索しなければならないので、正規表現のワイルドカードを用いることにしました。
quiquiさんより「path_pyの引数をどうやって得るか」2020/05/17 0:45 追記
python3
1raw_path = input() # 「手動」でコピペ 2path_py(raw_path)
実装、しかし...
python3
1import re 2 3def path_py(path_win): 4 fragmented = [] 5 for letter in path_win: 6 fragmented.append(letter) 7 8 regex_escape = re.compile(r'\.') # エスケープされた'\'とワイルドカード 9 10# 後略
よし、これでリストの値を順番にregex_escape.search()してオブジェクトが!=Noneなら...
アレ...?
僕が検索したかったのは任意のエスケープ文字(1文字)です。
エスケープと任意の文字(2文字)ではありません。
ましてやr'.'(エスケープされたワイルドカード、すなわちただのピリオド1文字)でもありません。
どうすればよいのでしょう...
解決後記
pepperleafさんのご回答まんまでした。
まとめてになりますが皆様ご回答ありがとうございます。
回答3件
あなたの回答
tips
プレビュー