Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:如何删除'$';?_Python - Fatal编程技术网

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%!