Как разделить строку разными словами

#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 и , но с этим ничего не поделаешь.

Объяснение:

 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,]