python:如何删除'$';?
我要做的就是去掉美元符号“$”。这看起来很简单,但我真的不知道为什么我的代码不起作用python:如何删除'$';?,python,Python,我要做的就是去掉美元符号“$”。这看起来很简单,但我真的不知道为什么我的代码不起作用 import re input = '$5' if '$' in input: input = re.sub(re.compile('$'), '', input) print input 输入仍然是“$5”,而不仅仅是“5”!有人能帮忙吗?试着用替换: input = input.replace('$', '') 正如Madbreaks所说,$意味着匹配正则表达式中的行尾 这里有一个指向正
import re
input = '$5'
if '$' in input:
input = re.sub(re.compile('$'), '', input)
print input
输入仍然是“$5”,而不仅仅是“5”!有人能帮忙吗?试着用
替换:
input = input.replace('$', '')
正如Madbreaks所说,$
意味着匹配正则表达式中的行尾
这里有一个指向正则表达式的便捷链接:在本例中,我将使用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
用于将一个字符切换为另一个字符,而str.replace
将一个子字符串替换为另一个子字符串。因此,对于诸如我想删除所有字符a、b、c
,或者我想将a
更改为d
,我建议str.translate
。相反,像“我想用def
替换子字符串abc
”这样的问题非常适合str.replace
请注意,您的示例不起作用,因为$
在regex中有特殊含义(它在字符串末尾匹配)。要使其与正则表达式一起工作,您需要转义$
:
>>> re.sub('\$','',s)
'foo bar baz qux'
工作正常。除了其他答案外,您还可以使用:
$是正则表达式中的一个特殊字符,转换为“字符串结尾”
如果你想真正地使用它,你需要逃避它
试试这个:
import re
input = "$5"
if "$" in input:
input = re.sub(re.compile('\$'), '', input)
print input
你需要避开美元符号,否则python会认为它是一个锚
$
在RegExesNoooo wonder中有自己的含义。谢谢为什么?这并不能回答问题,它提供了一种替代方法。为什么不解释为什么op的方法不起作用?@Madbreaks:你为什么不自己写答案呢?似乎你有写答案的知识,你对其他答案不满意,即使你有2k代表,你也不想编辑其他答案。请随意编辑@Madbreaks,这是一个社区。@Madbreaks:我认为你在这个问题上做的事情太多了。与其负责与社区分享你的知识,不如让别人替你说,这只是满足自我的一种方式。“编辑”按钮的存在是有原因的。@Madbreaks:请阅读页面,该页面解释了“否决权应保留在极端情况下。这并不意味着取代沟通和编辑。”特别是,不要因为答案不够彻底而否决它。@Madbreaks我只想删除美元符号“$”。
@Madbreaks没有冒犯,这绝对是如何删除“$”
imo的答案。这不是一个解决办法。
import re
input = "$5"
if "$" in input:
input = re.sub(re.compile('\$'), '', input)
print input
import re
fred = "$hdkhsd%$"
print re.sub ("\$","!", fred)
>> !hdkhsd%!