+---------+---------+------------+-----------+
| Input | Excepted |
+---------+---------+------------+-----------+
| EUR 1.409,00 | 1409 |
| $ 409,05 | 409.05 |
| ¥409.50 | 409.5 |
| CNY 1,000 | 1000 |
+---------+---------+------------+-----------+
我想到的第一个想法是正则表达式。我不能写。 您如何解决这个问题?
答案 0 :(得分:1)
您可以使用多个正则表达式迭代:
import re
results = []
# Get list of numbers
numbers = re.findall('[\d,.]+', 'EUR 1.409,00 $ 409,05 ¥409.50 CNY 1,000.00')
# Parse number
for number in numbers:
dp = ''
ip = number
match = re.search('(?<=[,.])(?:\d{2})$', number)
# Get decimal places
if match:
dp = match.group()
# Extract integer places
ip = number[:match.start()]
# Remove commas and periods from integer
ip = ip.translate(None, ',.')
# Parse float
results.append(float('{}.{}'.format(ip, dp)))
print(results)
结果为[1409.0, 409.05, 409.5, 1000.0]
。
我敢打赌,有一种更方便的正则表达式可以一并完成,但至少它应该对您有用:)
答案 1 :(得分:0)
要开始使用,可以使用正则表达式([0-9.,]+)
提取具有不同十进制语言环境的数字。
然后,您可能希望遵循Tim Biegeleisen的建议,并使用语言环境库将它们转换为数字。