Почему str.split() удаляет элементы Noney, а str.split ('') - нет?Почему str.split() удаляет элементы Noney, а str.split ('') - нет?
>>> s = 'this is an irritating string with random spacing .'
>>> s.strip().split(' ')
['this', 'is', '', '', 'an', '', '', 'irritating', 'string', 'with', '', 'random', 'spacing', '', '.']
>>> s.strip().split()
['this', 'is', 'an', 'irritating', 'string', 'with', 'random', 'spacing', '.']
Согласно docs:
str.split (SEP = нет, maxsplit = -1)
Если Сентябрем дается, последовательные разделители не сгруппированы вместе и считаются разграниченными пустыми строками (например, '1,, 2'.split (', ') возвращает [' 1 ',' ',' 2 ']). Аргумент sep может состоять из нескольких символов (например, '1 <> 2 <> 3'.split (' <> ') возвращает [' 1 ',' 2 ',' 3 ']). Разделение пустой строки с указанным разделителем возвращает [''].
Если sep не указан или None, применяется другой алгоритм расщепления: пробежки последовательных пробелов рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет ведущие или конечный пробел. Следовательно, разделение пустой строки или строки, состоящей из просто пробела с разделителем None, возвращает [].
Так использовать аргумент ключевого слова sep=
, является следующим за вещий способ удалить элементы Noney?
[w for w in s.strip().split(' ') if w]
Если это только пробельные символы (\s\t\n
), str.split()
будет достаточно, но позволяет сказать, что мы пытаемся разделить на другой персонаж/подстроке, то если условие в списке понимании необходимо. Это правильно?
Ни один не является символом пробела. Я даже не знаю, что означает Noney, но метод работает как задокументированный. У вас нет элементов None в строке –
Почему бы просто не использовать 'split()'? Более того, что вы на самом деле пытаетесь сделать? –
Примечание: если вы используете 'split' без аргумента, вызов' strip' сначала является избыточным; 'split' уже удалит ведущее и конечное пустое пространство без добавления дополнительного вызова метода и временной' str'. – ShadowRanger