来自perl,我正在尝试这样做:
$dollar1 = 'USD -$1,009.00 USD' ;
$dollar1 =~ s/^\D+// ;
$dollar1 =~ s/\D+$// ;
在python中。我已经尝试了以下以及其他几个迭代。谷歌搜索,我看到了很多全局匹配和替换的例子,但是没有锚点,还有一些使用类型特定方法的例子。但是我仍然没有得到理想的输出,仅仅是“ d,d.d”
任何帮助表示赞赏。谢谢!
import re
dollar1 = 'USD -$1,009.00 USD' # example format
re_leadgarbage = re.compile(r'^\D+')
re_trailgarbage = re.compile(r'\D+$')
dollar1 = re_leadgarbage.sub(dollar1, "")
dollar1 = re_trailgarbage.sub(dollar1, "")
print (dollar1)
答案 0 :(得分:1)
正则表达式对象的sub
方法中参数的顺序为replacement, string
:
dollar1 = re_leadgarbage.sub("", dollar1)
dollar1 = re_trailgarbage.sub("", dollar1)
还考虑使用\Z
(字符串结尾)而不是$
(可选换行符,字符串结尾),请注意,您只能用^\D+|\D+\z
进行一次替换。另外,\d
匹配所有Unicode数字,因此如果不想获取٣,请考虑使用[^0-9]
而不是\D
。
答案 1 :(得分:1)
或者,尝试:
import re
dollar1 = 'USD -$1,009.00 USD'
print re.search('([0-9,.])+', dollar1).group()
答案 2 :(得分:0)
如果您输入的数据如您提到的'USD -$1,009.00 USD'
,'USD $1,95858.98 USD'
等,那么您也可以使用以下方法获取它。
>>> dollar1 = 'USD -$1,009.00 USD'
>>> money = dollar1.split('$')[1].split()[0]
>>>
>>> money
'1,009.00'