Extract currency amount from string in Python

2024/10/3 2:16:10

I'm making a program that takes currency from a string and converts it in to other currencies. For example, if the string was 'the car cost me $13,250' I would need to get $ and 13250. I have this regex already (?:\£|\$|\€)(?:.{1,}) that sort of does it, however there is a reasonably large possibility that the string might have more than one price, all using different currencies. This is something that I do no know how to do effectively.

What I need to know is how to extract all of the prices from a string. I think even if the regex just returns something like ['$12,250,000','£14,500,123','£120.25'] then it is fine because I can use something like this to get the number:

prices = ['$12,250','£14,500','£120']
for value in prices:value.replace(',','')

And something like this to get the currency:

for c in prices:currency = c[0]

Then there is the problem that the price might not be a whole number, and might be something like $12.54. Any help on how to get that initial list of prices would be great.

Answer

This regular expression will work better for your purposes:

(?:[\£\$\€]{1}[,\d]+.?\d*)

Try it out here.

Then as sainoba notes, you can use re.findall or re.finditer to get the matches.

Then you can extract the currency from the first character, remove commas, and finally split on a decimal point if needed.

https://en.xdnf.cn/q/70783.html

Related Q&A

Error: The elasticsearch backend requires the installation of requests. How do I fix it?

Im having a issue when I ran "python manage.py rebuild_index" in my app supported by haystack and elasticsearch.Python 2.7 Django version 1.6.2 Haystack 2.1.0 Elasticsearch 1.0Please see the …

numpy: applying argsort to an array

The argsort() function returns a matrix of indices that can be used to index the original array so that the result would match the sort() result.Is there a way to apply those indices? I have two array…

Jinja2 for word templating

I would like to use jinja2 for word templating like mentioned is this short article. The problem Im facing is as follows, if I put {{title}} in my word-file the resulting xml can look like this:<w:r…

API capture all paginated data? (python)

Im using the requests package to hit an API (greenhouse.io). The API is paginated so I need to loop through the pages to get all the data I want. Using something like:results = [] for i in range(1,326+…

How to convert latitude longitude to decimal in python?

Assuming I have the following:latitude = "20-55-70.010N" longitude = "32-11-50.000W"What is the easiest way to convert to decimal form? Is there some library?Would converting from…

No module named main, wkhtmltopdf issue

Im new in python, but all search results i found was useless for me.C:\Users\Aero>pip install wkhtmltopdf Collecting wkhtmltopdfUsing cached wkhtmltopdf-0.2.tar.gz Installing collected packages: wkh…

Is there a Python shortcut for variable checking and assignment?

Im finding myself typing the following a lot (developing for Django, if thats relevant):if testVariable then:myVariable = testVariable else:# something elseAlternatively, and more commonly (i.e. buildi…

python scipy Delaunay plotting point cloud

I have a pointlist=[p1,p2,p3...] where p1 = [x1,y1],p2=[x2,y2] ...I want to use scipy.spatial.Delaunay to do trianglation on these point clouds and then plot itHow can i do this ?The documentation for…

Pythonic way to verify parameter is a sequence but not string

I have a function that gets a list of DB tables as parameter, and returns a command string to be executed on these tables, e.g.:pg_dump( file=/tmp/dump.sql,tables=(stack, overflow),port=5434name=europe…

How to get a random (bootstrap) sample from pandas multiindex

Im trying to create a bootstrapped sample from a multiindex dataframe in Pandas. Below is some code to generate the kind of data I need.from itertools import product import pandas as pd import numpy a…