これは私が半厄介な問題を持っています。正規表現のサブ問題
は、次のコードを取る:
import re
str_to_be_subbed = r'somefile.exe -i <INPUT>'
some_str = r'C:\foobar'
s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
print s
を私はそれが私を与えると思うだろう:
somefile.exe -i C:\\foobar
をしかし、その代わりに、それは私を与える:
somefile.exe -i C:♀oobar
私は、\ fは知っていますエスケープ文字ですが、たとえこのようにしても、特殊文字をエスケープする必要があります。私はこれを行う場合でも:
print r'%s' % s
をそれはまだ私にこれを与える:
somefile.exe -i C:♀oobar
は、なぜそれがこれを行うのですか?そして、これを避ける最善の方法は何ですか?
忍者編集:私はsの値を見れば
それは次のとおりです。
'somefile.exe -i C:\x0coobar'
の\ X0に\ Fターンをした理由。ああ。
編集:私はこれにコードを変更した場合
もう一つ質問、:
import re
import os
str_to_be_subbed = r'somefile.exe -i <INPUT>'
some_str = os.path.abspath(r'C:\foobar')
some_str
s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
print s
は私を与える:
>>> import re
>>> import os
>>> str_to_be_subbed = r'somefile.exe -i <INPUT>'
>>> some_str = os.path.abspath(r'C:\foobar')
>>> some_str
'C:\\foobar'
>>> s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
>>> print s
somefile.exe -i C:♀oobar
は今理由です。 os.path.abspathが\をエスケープするので。なぜまだ再暴れているのですか?
これは、ちょうど古いアプリケーションでランダムに切り取られたこの小さな問題の本当に小さな例です。私は実際に行くことができませんし、これをstring.replaceに変更するのは、一日を費やさずに設定を行うためです。
私は本当になぜこれをやっているのか不思議です。上記の問題。
ありがとうございました。 エンコードは驚くほど効果的です。 – UberJumper