#python #python-3.x
#python #python-3.x
Вопрос:
Я заинтересован в умножении всех чисел в строке Python на переменную (y), как в следующем примере, где y = 10.
Initial Input:
"I have 15, 7, and 350 cars, boats and bikes, respectively, in my parking lot."
Desired Output:
"I have 150, 70, and 3500 cars, boats and bikes, respectively, in my parking lot."
Я попробовал следующий код Python, но не получаю желаемого результата. Как я могу создать желаемый результат в коде Python?
string_init = "I have 15, 7, and 350 cars, boats and bikes, respectively, in my parking lot."
string_split = string.split()
y = 10
multiply_string = string * (y)
print(multiply_string)
Ответ №1:
Здесь вы можете использовать регулярное выражение.
Пример:
import re
s = "I have 15, 7, and 350 cars, boats and bikes, respectively, in my parking lot."
y = 10
print(re.sub(r"(d )", lambda x: str(int(x.group())*y), s))
#or
# print(re.sub(r"(d )", lambda x: f"{int(x.group())*y}", s))
Вывод:
I have 150, 70, and 3500 cars, boats and bikes, respectively, in my parking lot.
Комментарии:
1. Мне нравится этот ответ, потому что его можно довольно легко адаптировать и для обработки десятичных дробей.
2. Что именно означает приведенное выше регулярное выражение и как оно работает? Учитывает ли это различные типы знаков препинания, нечисловые символы и т.д.?
3.
(d )
находит целые числа в строке. А затем оно умножается на требуемое число
Ответ №2:
Вы можете использовать регулярное выражение:
import re
print(re.sub("(d )", "g<1>0", string_init))
это должно выводить:
I have 150, 70, and 3500 cars, boats and bikes, respectively, in my parking lot.
Комментарии:
1. Что именно означает приведенное выше регулярное выражение и как оно работает? Учитывает ли это различные типы знаков препинания, нечисловые символы и т.д.?