Регулярное выражение Python преобразует одну строку в несколько строк

Это мои данные в одной строке.

1. B 2. E 3. E 4. D 5. E 6. A 7. A 8. E 9. E 10. D

Как преобразовать в несколько строк, как показано ниже, с помощью Python

1. B
2. E
3. E
.
.
10. D

🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.


2
52
3

Ответы:

Для достижения этой цели вы действительно можете использовать регулярное выражение.

Этот код Python использует регулярное выражение для преобразования вашей строки в желаемый многострочный формат:

import re

my_string: str = "1. B 2. E 3. E 4. D 5. E 6. A 7. A 8. E 9. E 10. D"
# Use regex to find all occurrences of the pattern "number. letter"
matches = re.findall(r'\d+\.\s\w', data)
# Join the matches with newline characters; this creates the multi-lines
formatted_data = "\n".join(matches)

# Print the formatted data
print(formatted_data)

Я использую re.findall, чтобы найти все вхождения вашего конкретного шаблона, а затем объединить их с символом новой строки \n, чтобы создать поддержку многострочного кода.


Решено

Помимо замены каждого EOL (который будет буквой) на \n, вы можете попробовать этот подход, который берет каждый элемент, состоящий из числа, точки и буквы, и печатает их по порядку:

import re

line = "1. B 2. E 3. E 4. D 5. E 6. A 7. A 8. E 9. E 10. D"

entries = re.findall(r'\d+\.\s[A-Z]', line)

for entry in entries:
    print(entry)

Это результат, который вы должны получить:

1. B
2. E
3. E
4. D
5. E
6. A
7. A
8. E
9. E
10. D

Как предложено в комментарии, попробуйте:

import re

line = "1. B 2. E 3. E 4. D 5. E 6. A 7. A 8. E 9. E 10. D"

res=re.sub("\s+(?=\d)","\n",line)
print(res)

  • \s+(?=\d): Сопоставляет пробелы только тогда, когда они встречаются перед цифрами.

  • \n: заменить на новую строку