2024-09-27 00:17:38 发布
网友
我有许多表示货币值的字符串,比如$15K、USD20M、€1.8k,等等 现在我需要提取数字和乘数(K,K,M或M)来处理数据。你知道吗
$15K
USD20M
€1.8k
我想出了以下正则表达式:
[\${1}|€{1}][0-9]+(?:\.[0-9]*)?[M|K|k|m]
但我不确定如何提取表达式的每个子部分,并将它们作为变量返回到Python代码中,因此对于$15K,我希望:
currency='$' ammount=15 multiplier='K'
有什么想法吗?你知道吗
像这样?你知道吗
In [1]: import re In [2]: re.match(r'(?P<currency>\D+)(?P<amount>\d+(\.\d+)?)(?P<multiplier>[mMkK])', '$15k').groupdict() Out[2]: {'amount': '15', 'currency': '$', 'multiplier': 'k'}
但在Python中这并不是必须的,只要你能做到
currency, amount, _, multiplier = re.match(r'(\D+)(\d+(\.\d+)?)([mMkK])', '$1.5k').groups()
或者更简单
currency, amount, multiplier = re.match(r'(\D+)(\d+(?:\.\d+)?)([mMkK])', '$1.5k').groups()
像这样:
In [68]: lis= ["$15K", "USD20","$1.5K"] In [69]: l=lambda x:re.findall(r"(\$|USD)(\d*\.\d+|\d+)([MKkm])?",x) | | | ^ ^ ^ currency amt multiplier In [70]: map(l,lis) Out[70]: [[('$', '15', 'K')], [('USD', '20', '')], [('$', '1.5', 'K')]]
像这样?你知道吗
但在Python中这并不是必须的,只要你能做到
或者更简单
像这样:
相关问题 更多 >
编程相关推荐