Это мои данные в одной строке.
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
@DuesserBaest: Хорошо, но \h
не существует в диалекте Python re
.
юп - смотри мой ответ; \s+
можно использовать как заменитель. используя модуль регулярных выражений , вы можете использовать \h
и многие другие функции регулярных выражений.
Для достижения этой цели вы действительно можете использовать регулярное выражение.
Этот код 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
, чтобы создать поддержку многострочного кода.
Большое спасибо @Razzer..
Помимо замены каждого 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
Большое спасибо @Shai V
Как предложено в комментарии, попробуйте:
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
: заменить на новую строку
Попробуйте сопоставить горизонтальные разрывы строк, за которыми следует цифра
\h+(?=\d)
, и заменить их разрывами строк\n
. Смотрите здесь