Ответ 1
Просто используйте my_str.split()
без ' '
.
Более того, вы также можете указать, сколько разделов выполнить, указав второй параметр:
>>> ' 1 2 3 4 '.split(None, 2)
['1', '2', '3 4 ']
>>> ' 1 2 3 4 '.split(None, 1)
['1', '2 3 4 ']
Я пытаюсь найти самый pythonic способ разделить строку, как
"несколько слов в строке"
в отдельные слова. string.split(' ')
работает нормально, но возвращает список элементов пробела в списке. Конечно, я мог перебирать список и удалять пробелы, но мне было интересно, есть ли лучший способ?
Просто используйте my_str.split()
без ' '
.
Более того, вы также можете указать, сколько разделов выполнить, указав второй параметр:
>>> ' 1 2 3 4 '.split(None, 2)
['1', '2', '3 4 ']
>>> ' 1 2 3 4 '.split(None, 1)
['1', '2 3 4 ']
Как насчет:
re.split(r'\s+',string)
\s
для любых пробелов. Таким образом, \s+
является смежным пробелом.
Используйте string.split()
без аргумента или re.split(r'\s+', string)
вместо этого:
>>> s = 'some words in a string with spaces'
>>> s.split()
['some', 'words', 'in', 'a', 'string', 'with', 'spaces']
>>> import re; re.split(r'\s+', s)
['some', 'words', 'in', 'a', 'string', 'with', 'spaces']
Из документов:
Если
sep
не указан или являетсяNone
, применяется другой алгоритм разбиения: серии последовательных пробелов рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет начальный или замыкающий пробел. Следовательно, разбиение пустой строки или строки, состоящей только из пробелов, с разделителемNone
возвращает[]
.
>>> a = "some words in a string"
>>> a.split(" ")
['some', 'words', 'in', 'a', 'string']
параметр split не включен в результат, поэтому я думаю, что что-то больше о вашей строке. в противном случае он должен работать
если у вас более одного пробела, просто используйте split() без параметров
>>> a = "some words in a string "
>>> a.split()
['some', 'words', 'in', 'a', 'string']
>>> a.split(" ")
['some', 'words', 'in', 'a', 'string', '', '', '', '', '']
или он просто разбивается на отдельные пробелы
text = "".join([w and w+" " for w in text.split(" ")])
преобразует большие пространства в отдельные пространства
Самый питонский и правильный способ - просто не указывать какой-либо разделитель:
"some words in a string".split()
# => ['some', 'words', 'in', 'a', 'string']
Также читай: Как разделить на 1 или более вхождений разделителя в Python?