3 回答

TA貢獻1847條經(jīng)驗 獲得超7個贊
split的第一個參數(shù)是分隔符。
如果省略第一個參數(shù),默認把所有的空格、制表符、回車符當作分隔符,并過濾掉空串。這個也是你第一種寫法的效果。
line.split(‘\t''\n')
'\t'和'\n'是兩個字符串,會自動進行拼接,形成'\t\n'作為分隔符。而在你輸入的字符串中,不包含這樣的字串,所以就分割的結果就是原串。
split(‘\t')
以'\t'作為分隔符,分割的結果就是第三種寫法。
split不支持同時使用多種字符做分隔符,如果想實現(xiàn)這樣的效果,可以用re,例如:
>>> a
'wowofbfwjowoefbwfoweojbwoefja'
>>> import re
>>> re.split('[ab]', a)
['wowof', 'fwjowoef', 'wfoweoj', 'woefj', '']

TA貢獻2037條經(jīng)驗 獲得超6個贊
>>> whole = map(lambda ln: ln.split('\t'), filter(lambda ln: ln.split(), f.readlines().split('\n')))
>>> whole
[['1800', '897', '87784'], ['1800', '897', '87784']]
>>>

TA貢獻1869條經(jīng)驗 獲得超4個贊
很有趣的問題,想法也不錯。體現(xiàn)出編程的樂趣。
的確是^z后再出結果。
這種做法實際上在linux下,利用管道處理效率很高。 很高,有時候超出想象。
不過,如果你自己在命令行直接輸入,因為有緩存(所有操作系統(tǒng)的標準輸入輸出一定有緩存),所以除非你用flush,一般緩存不滿不會真的向前傳送。所以^z表示文件結尾,stdin就關閉,這樣緩存就會flush了。
如果是立即回顯,說明對方的調試環(huán)境里,使用了stdin.flush, 對方可能使用了一種IDLE環(huán)境。 我也不知道是哪一種。比如eclipse。
添加回答
舉報