#python #python-3.x #string
Вопрос:
Я хочу разделить строку: "3quartos2suítes3banheiros126m²"
в этом формате с использованием python:
3 quartos
2 suítes
3 banheiros
126m²
Есть ли встроенная функция, которую я могу использовать? Как я могу это сделать?
Комментарии:
1. для этого вы можете использовать регулярное выражение python: docs.python.org/3/library/re.html
Ответ №1:
Вы можете сделать это с помощью регулярных выражений, в частности re.findall()
s = "3quartos2suítes3banheiros126m²"
matches = re.findall(r"[d,] [^d] ", s)
выдает список, содержащий:
['3quartos', '2suítes', '3banheiros', '126m²']
Объяснение регулярных выражений (Regex101):
[d,] : Match a digit, or a comma one or more times
[^d] : Match a non-digit one or more times
Затем добавьте пробел после цифр, используя re.sub()
:
result = []
for m in matches:
result.append(re.sub(r"([d,] )", r"1 ", m))
что делает result =
['3 quartos', '2 suítes', '3 banheiros', '126 m²']
Это добавляет пробел между 126
и m²
, но с этим ничего не поделаешь.
Объяснение:
Pattern :
r"([d,] )" : Match a digit or a comma one or more times, capture this match as a group
Replace with:
r"1 " : The first captured group, followed by a space
Комментарии:
1. @GuilhermeCelliFadel Смотрите мою правку. Скобки
[ ]
позволяют регулярному выражению соответствовать любому из символов, указанных в скобках. Итак, я просто изменилd
на[d,]