爲什麼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)
如果SEP是給定的,連續的分隔符不組合在一起,並被視爲分隔空字符串(例如,'1,2'.split(',')返回['1','','2'])。 sep參數可以由多個字符組成(例如,'1 <> 2 <> 3'.split('<>')返回['1','2','3'])。用指定分隔符分割空字符串會返回['']。
如果未指定sep或爲None,則應用不同的分割算法:將連續空白的運行視爲單個分隔符,並且如果該字符串具有前導或結果,則開始或結束時不會包含空字符串或尾隨空白。因此,將空字符串或只包含空格的字符串拆分爲無分隔符將返回[]。
所以使用關鍵字參數sep=
,是在Python的方式來刪除Noney項下?
[w for w in s.strip().split(' ') if w]
如果它只是空格(\s\t\n
),str.split()
就足夠了,但可以說我們正在試圖分裂另一個字符/串,在列表理解的,如果條件是必要的。是對的嗎?
無不是空格字符。我甚至不知道Noney是什麼意思,但該方法按照文件記錄。你在字符串中沒有None元素 –
爲什麼不使用'split()'?而且,你究竟在做什麼? –
注意:如果你使用no-arg'split',首先調用'strip'是多餘的; 'split'將會刪除前導和尾部的空白,而不會增加額外的方法調用和臨時的'str'。 – ShadowRanger