Я пытаюсь переформатировать валюту евро в текстовые данные.Исходный формат выглядит следующим образом: 3 000,00 евро или также 33 540 000 евро. -.
Я хочу стандартизировать формат до 3000,00 евро или 33540000,00 евро.
Я переформатировал 2,500 евро - успешно используя этот код:
import re
format1 = "a piece of text with currency EUR 2.500.- and some other information"
regexObj = re.compile(r'EUR\s*\d{1,3}[.](\d{3}[.]-)')
text1 = regexObj.sub(lambda m:"\u20ac"+"{:0.2f}".format(float(re.compile('\d+(.\d+)?(\.\d+)?').search(m.group().replace('.','')).group())),format1)
Out: "a piece of text with currency €2500.00 and some other information"
Это дает мне € 2500,00, что правильно.Я пытался применить ту же логику к другим форматам безрезультатно.
format2 = "another piece of text EUR 3.000.00 and EUR 5.000.00. New sentence"
regexObj = re.compile('\d{1,3}[.](\d{3}[.])(\d{2})?')
text2 = regexObj.sub(lambda m:"\u20ac"+"{:0.2f}".format(float(re.compile('\d+(.\d+)?(\.\d+)?').search(m.group().replace('.','')).group())),format2)
Out: "another piece of text EUR €300000.00 and EUR €500000.00. New sentence"
и
format3 = "another piece of text EUR 33.540.000.- and more text"
regexObj = regexObj = re.compile(r'EUR\s*\d{1,3}[.](\d{3}[.])(\d{3}[.])(\d{3}[.]-)')
text3 = regexObj.sub(lambda m:"\u20ac"+"{:0.2f}".format(float(re.compile('\d+(.\d+)?(.\d+)?').search(m.group().replace('.','')).group())),format3)
Out: "another piece of text EUR 33.540.000.- and more text"
Я думаю, что проблема может быть в regexObj.sub (), так как часть .format () меня смущает.Я пытался изменить re.compile ('\ d + (. \ D +)? (. \ D +)?') В этом, но я не могу создать желаемый результат.Любые идеи высоко ценится.Спасибо!