6

Разделить строку по пробелам в Python

1

Описание проблемы

Я ищу эквивалент на Python для следующего кода на Java:

String str = "many   fancy word \nhello    \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);

["many", "fancy", "word", "hello", "hi"]

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

Заранее спасибо за помощь!

3 ответ(ов)

0

В вашем коде вы пытаетесь разбить строку s на слова с помощью регулярного выражения, используя функцию re.split(). Однако в вашем выражении есть ошибка: вместо \s+ нужно использовать двойной символ обратной косой черты, то есть \\s+, чтобы правильно интерпретировать символы в строке.

Вот исправленный код:

import re
s = "many   fancy word \nhello    \thi"
result = re.split(r'\s+', s)
print(result)

Здесь r'\s+' используется для обозначения регулярного выражения, которое соответствует одному или более пробельным символам (включая пробелы, символы новой строки и табуляции). Как результат, переменная result будет содержать список всех слов из строки s:

['many', 'fancy', 'word', 'hello', 'hi']

Таким образом, re.split() успешно разбивает исходную строку на отдельные слова, игнорируя пробелы между ними.

0

Использование метода split() — это самый питонячий способ разделения строки.

Также полезно помнить, что если вы примените split() к строке, не содержащей пробелов, то получите в результате список с этой строкой.

Пример:

>>> "ark".split()
['ark']
0

Да, существует другой способ воспользоваться модулем re, который выполняет обратную операцию, находя все слова вместо того, чтобы разделять всю строку по пробелам.

Вот пример кода:

import re
s = "many   fancy word \nhello    \thi"
result = re.findall(r'\S+', s)
print(result)  # Вывод: ['many', 'fancy', 'word', 'hello', 'hi']

В приведённом регулярном выражении r'\S+' происходит поиск одного или более непробельных символов. Это позволяет извлечь все слова из строки, независимо от количества пробелов между ними.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь