私がしたいのは、ドル記号「$」を削除することだけです。これは単純に思えますが、コードが機能しない理由が本当にわかりません。
import re
input = '$5'
if '$' in input:
input = re.sub(re.compile('$'), '', input)
print input
入力は '5' ではなく '$5' のままです! 誰でも助けることができますか?
私がしたいのは、ドル記号「$」を削除することだけです。これは単純に思えますが、コードが機能しない理由が本当にわかりません。
import re
input = '$5'
if '$' in input:
input = re.sub(re.compile('$'), '', input)
print input
入力は '5' ではなく '$5' のままです! 誰でも助けることができますか?
replace
代わりに使用してみてください:
input = input.replace('$', '')
Madbreaks が述べているよう$
に、正規表現で行末に一致することを意味します。
正規表現への便利なリンクは次のとおりです: http://docs.python.org/2/library/re.html
この場合、私は使用しますstr.translate
>>> '$$foo$$'.translate(None,'$')
'foo'
そして、ベンチマーク目的のために:
>>> def repl(s):
... return s.replace('$','')
...
>>> def trans(s):
... return s.translate(None,'$')
...
>>> import timeit
>>> s = '$$foo bar baz $ qux'
>>> print timeit.timeit('repl(s)','from __main__ import repl,s')
0.969965934753
>>> print timeit.timeit('trans(s)','from __main__ import trans,s')
0.796354055405
と の間には多くの違いがstr.replace
ありstr.translate
ます。最も注目に値するのは、 1 つの文字を別の文字に置き換えるstr.translate
一方で、1 つの部分文字列を別の文字列に置き換えるのに役立つことです。str.replace
なので、全キャラ削除しa,b,c
たい、 に変更a
したい、などのお悩みd
には をオススメしstr.translate
ます。abc
逆に、「部分文字列を次の文字列に置き換えたい」などの問題def
はstr.replace
.
正規表現で特別な意味があるため、例が機能しないことに注意してください$
(文字列の末尾に一致します)。正規表現で動作させるには、次をエスケープする必要があります$
。
>>> re.sub('\$','',s)
'foo bar baz qux'
正常に動作します。
$ は、「文字列の末尾」に変換される正規表現の特殊文字です。
文字通りに使用したい場合は、エスケープする必要があります
これを試して:
import re
input = "$5"
if "$" in input:
input = re.sub(re.compile('\$'), '', input)
print input
ドル記号をエスケープする必要があります-そうしないと、Pythonはそれがアンカーであると考えます http://docs.python.org/2/library/re.html
import re
fred = "$hdkhsd%$"
print re.sub ("\$","!", fred)
>> !hdkhsd%!
他の回答とは別に、次のものも使用できますstrip()
。
input = input.strip('$')