【发布时间】:2019-06-18 18:06:08
【问题描述】:
我正在尝试进行一些数据分析,并且我想要分析一些数字,问题是这些数字采用不同的字符串格式。这些是不同的格式:
“25,000,000 美元”或 “9 500 美元”或 “50,000 ETH”
它基本上总是一个数字,用逗号或空格分隔,然后是货币。根据币种,我想在之后计算美元金额。
过去一小时我一直在查找 Regex 表达式,但找不到任何可以解决我问题的方法。我确实取得了一些进展并实现了不同的表达方式,但没有一个是 100% 有效的。正如您将在下面看到的那样,它总是缺少一些东西。
for i, row_value in df2['hardcap'].iteritems():
try:
q = df2['hardcap'][i]
c = re.findall(r'[a-zA-Z]+', q)
if c[0] == "USD":
d = re.findall(r'^(\d?\d?\d(,\d\d\d)*|\d)', q)
#Do something with the number
elif c[0] == "EUR":
d = re.findall(r'^(\d?\d?\d(,\d\d\d)*|\d)', q)
#Do something with the number
elif c[0] == "ETH":
d = re.findall(r'^(\d?\d?\d(,\d\d\d)*|\d)', q)
#Do something with the number
print(d[0])
except Exception:
pass
所以我正在遍历我的数据框列,首先,我找出数字与哪种货币相关,我保存在 c 中的“USD”、“EUR”或“ETH”。这部分已经可以了,在那之后,我想以可以转换为整数的形式提取数字,以便我可以用它进行计算。
现在,这条线 d = re.findall(r'^(\d?\d?\d(,\d\d\d)*|\d)', q) 在 d[0] 中返回类似的内容: ('100,000,000', ',000') 如果数字是 100,000,000 并且 ('270', '') 如果数字是 270 000 000
在最好的情况下,我希望得到的是: 100000000 和 270000000,但任何提取整数的方法都足够了
如果我在正则表达式方面没有太多经验并且现在感觉卡住了,我将不胜感激。
【问题讨论】:
标签: python regex numbers expression