我想要做的就是删除美元符号'$'。这看起来很简单,但我真的不知道为什么我的代码不工作。
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
。相反,诸如“我想用def
替换子字符串abc
”的问题非常适合于str.replace
。
请注意,您的示例不起作用,因为$
在正则表达式中具有特殊含义(它匹配字符串的末尾)。为了得到它与正则表达式的工作,你需要躲避$
:
>>> re.sub('\$','',s)
'foo bar baz qux'
工程确定。
$是正则表达式特殊字符转换为
“字符串的结束”,你需要的,如果逃避它你想用它字面上
试试这个:
import re
input = "$5"
if "$" in input:
input = re.sub(re.compile('\$'), '', input)
print input
你需要躲避美元符号 - 否则蟒蛇认为它是一种锚http://docs.python.org/2/library/re.html
import re
fred = "$hdkhsd%$"
print re.sub ("\$","!", fred)
>> !hdkhsd%!
'$'在正则表达式 – Madbreaks 2013-03-05 01:21:09
NOOOO难怪其拥有的意义。谢谢! – user1899415 2013-03-05 01:25:24