在python中剥离开头和结尾的非数字字符

时间:2018-07-09 16:30:40

标签: python python-3.x

来自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)

3 个答案:

答案 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'