Выбор наибольшей денежной стоимости в строке - PullRequest
1 голос
/ 30 января 2020

У меня есть эта строка:

"da licitação: r $ 43.470,00 (quarenta e três mil, quatrocentos e setenta reais) \ n \ n3 dos recursos orçamento são r $ 24.123,88"

Обратите внимание, что в моих строках может быть несколько денежных значений. Я хочу отделить только самое большое, возвращение должно быть "43,470,00" или 43,470,00 или 43470.

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 30 января 2020
# Create regular expression pattern for currencies
currency_pattern = re.compile(r"r\$ ([1-9][0-9.]*(?:,[0-9][0-9.]*)?)")

# Find the currencies in the string
currencies = currency_pattern.findall(" da licitação: r$ 43.470,00 (quarenta e três mil, quatrocentos e setenta reais)\n\n3 dos recursos orçamento são r$ 24.123,88")

# Reformat strings and cast to float
normalized_currencies = (float(currency.replace('.', '').replace(',', '.')) for currency in currencies)

# Now we can easily find the maximum value using the `max` function
max_currency = max(normalized_currencies)
print(max_currency)

43470.0

2 голосов
/ 30 января 2020

Вы можете использовать регулярные выражения для этой задачи:

import re

s = ''' da licitação: r$ 43.470,00 (quarenta e três mil, quatrocentos e setenta reais)\n\n3 dos recursos orçamento são r$ 24.123,88'''
m = max(re.findall(r'\d+\.?\d*,?\d*', s), key=lambda v: float(v.replace('.', '').replace(',', '.')), default=None)
print(m)

Отпечатки:

43.470,00
1 голос
/ 30 января 2020

Это должно сделать это (возвращает целое число!): Я взял важную часть кода из здесь

# Python3 program to extract all the numbers from a string 
import re 

# Function to extract all the numbers from the given string 
def getNumbers(str): 
    array = re.findall(r'[0-9]+', str) 
    return array 

# Driver code 
string = "adbv34.5hj43hvb42"
line = ''
line = re.sub('[!@#$]', '', string)

array = getNumbers(line)

arra_num = []

for nums in array:
    arra_num.append(int(nums))

print(max(arra_num)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...