Ответ 1
Просто не давайте никакого измерителя?
>>> a="test result"
>>> a.split()
['test', 'result']
У меня есть форматированная строка из файла журнала, которая выглядит так:
>>> a="test result"
То есть, тест и результат разбиваются на некоторые пробелы - вероятно, он был создан с использованием форматированной строки, которая давала test
некоторое постоянное расстояние.
Простое разделение не будет делать трюк:
>>> a.split(" ")
['test', '', '', '', ... '', '', '', '', '', '', '', '', '', '', '', 'result']
split(DELIMITER, COUNT)
очистили некоторые ненужные значения:
>>> a.split(" ",1)
['test', ' result']
Это помогло - но, конечно, мне действительно нужно:
['test', 'result']
Я могу использовать split()
, за которым следует map
+ strip()
, но я задавался вопросом, есть ли у него более Pythonic способ сделать это.
Спасибо,
Адам
ОБНОВЛЕНИЕ: Такое простое решение! Спасибо всем.
Просто не давайте никакого измерителя?
>>> a="test result"
>>> a.split()
['test', 'result']
>>> import re
>>> a="test result"
>>> re.split(" +",a)
['test', 'result']
>>> a.split()
['test', 'result']
Только это должно работать:
a.split()
Пример:
>>> 'a b'.split(' ')
['a', '', '', '', '', '', 'b']
>>> 'a b'.split()
['a', 'b']
В документации :
Если sep не указан или None, применяется другой алгоритм разделения: пробеги последовательного пробела рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет ведущую или конечную пробельные. Следовательно, разделение пустой строки или строки, состоящей из простого пробела с разделителем None, возвращает [].
Любая проблема с простым a.split()
?
Просто добавив еще один способ, более полезный в случаях, когда разделитель отличается от пространства, а s.split() не будет работать.
как str = "Python, is, more,,, flexible".
In [27]: s = "Python is more flexible"
In [28]: str_list = list(filter(lambda x: len(x) > 0, s.split(" ")))
In [29]: str_list
Out[29]: ['Python', 'is', 'more', 'flexible']