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

251

Я ищу эквивалент Python

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

["many", "fancy", "word", "hello", "hi"]
  • 0
    Это утверждение. Вы должны задать вопрос. Несколько вопросов к тебе: Куда ты смотришь? Вы уже нашли модуль re ?
  • 9
    вот почему аскер сказал, что они ищут его эквивалент Python
Теги:
string
split
whitespace

4 ответа

480
Лучший ответ

Метод str.split() без аргумента разбивается на пробелы:

>>> "many   fancy word \nhello    \thi".split()
['many', 'fancy', 'word', 'hello', 'hi']
  • 65
    Также полезно знать, что если вам нужно только первое слово (что означает передачу 1 качестве второго аргумента), вы можете использовать None в качестве первого аргумента: s.split(None, 1)
  • 6
    Если вам нужно только первое слово, используйте str.partition .
Показать ещё 7 комментариев
50
import re
s = "many   fancy word \nhello    \thi"
re.split('\s+', s)
  • 0
    это дает мне пробел в конце строки. Понятия не имею почему, оригинальная линия даже не имеет этого. Может быть, это игнорирует перевод строки?
  • 2
    @Gulzar сделать strip() в конце
Показать ещё 1 комментарий
9

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

>>> import re
>>> s = "many   fancy word \nhello    \thi"
>>> re.findall(r'\S+', s)
['many', 'fancy', 'word', 'hello', 'hi']

Выше регулярное выражение будет соответствовать одному или нескольким непространственным символам.

4

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

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

Пример:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню