Разделить строку по пробелам в Python
Описание проблемы
Я ищу эквивалент на Python для следующего кода на Java:
String str = "many fancy word \nhello \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);
["many", "fancy", "word", "hello", "hi"]
Как можно разбить строку на слова, используя регулярное выражение для пробелов в Python?
Заранее спасибо за помощь!
3 ответ(ов)
В вашем коде вы пытаетесь разбить строку 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()
успешно разбивает исходную строку на отдельные слова, игнорируя пробелы между ними.
Использование метода split()
— это самый питонячий способ разделения строки.
Также полезно помнить, что если вы примените split()
к строке, не содержащей пробелов, то получите в результате список с этой строкой.
Пример:
>>> "ark".split()
['ark']
Да, существует другой способ воспользоваться модулем re
, который выполняет обратную операцию, находя все слова вместо того, чтобы разделять всю строку по пробелам.
Вот пример кода:
import re
s = "many fancy word \nhello \thi"
result = re.findall(r'\S+', s)
print(result) # Вывод: ['many', 'fancy', 'word', 'hello', 'hi']
В приведённом регулярном выражении r'\S+'
происходит поиск одного или более непробельных символов. Это позволяет извлечь все слова из строки, независимо от количества пробелов между ними.
Как удалить пробелы?
Фильтрация DataFrame pandas по критериям подстроки
Как получить имя функции в виде строки?
Вывод строки в текстовый файл
Диапазон букв в Python