我要做的就是删除美元符号'$'。这看起来很简单,但我真的不知道为什么我的代码不起作用。
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
。最值得注意的是,这str.translate
对于将 1 个字符与另一个字符进行切换而str.replace
将 1 个子字符串替换为另一个字符很有用。因此,对于诸如我想删除所有字符之类的问题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('$')