Я пытаюсь провести некоторый анализ данных, и я хочу проанализировать некоторые числа, проблема в том, что эти числа имеют разные строковые форматы. Это разные форматы:
"25 000 000 долларов США" или
«9 500 долларов США» или
"50000 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
Итак, я перебираю свой столбец данных и сначала выясню, к какой валюте относится число: «USD», «EUR» или «ETH», которые я сохраняю в c. Эта часть уже работает, после этого я хочу извлечь число в форме, которая может быть преобразована в целое число, чтобы я мог выполнять вычисления с ним.
Прямо сейчас, линия
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, но для извлечения целых чисел достаточно любого
Буду признателен за любой удар в правильном направлении, поскольку у меня нет большого опыта работы с регулярными выражениями и я чувствую себя застрявшим прямо сейчас.