亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于python: split的用法,在后面的括號不同,輸出的也不一樣?

關于python: split的用法,在后面的括號不同,輸出的也不一樣?

滄海一幻覺 2019-09-02 11:06:28
python: split的用法,在后面的括號不同,輸出的也不一樣,大神能不能幫忙解釋一下下面的例子。
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

split的第一個參數是分隔符。
如果省略第一個參數,默認把所有的空格、制表符、回車符當作分隔符,并過濾掉空串。這個也是你第一種寫法的效果。

line.split(‘\t''\n')

'\t'和'\n'是兩個字符串,會自動進行拼接,形成'\t\n'作為分隔符。而在你輸入的字符串中,不包含這樣的字串,所以就分割的結果就是原串。

split(‘\t')

以'\t'作為分隔符,分割的結果就是第三種寫法。

split不支持同時使用多種字符做分隔符,如果想實現這樣的效果,可以用re,例如:
>>> a
'wowofbfwjowoefbwfoweojbwoefja'
>>> import re

>>> re.split('[ab]', a)
['wowof', 'fwjowoef', 'wfoweoj', 'woefj', '']

查看完整回答
反對 回復 2019-09-07
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

>>> whole = map(lambda ln: ln.split('\t'), filter(lambda ln: ln.split(), f.readlines().split('\n')))
>>> whole
[['1800', '897', '87784'], ['1800', '897', '87784']]
>>>

查看完整回答
反對 回復 2019-09-07
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

很有趣的問題,想法也不錯。體現出編程的樂趣。

的確是^z后再出結果。

這種做法實際上在linux下,利用管道處理效率很高。 很高,有時候超出想象。

不過,如果你自己在命令行直接輸入,因為有緩存(所有操作系統標準輸入輸出一定有緩存),所以除非你用flush,一般緩存不滿不會真的向前傳送。所以^z表示文件結尾,stdin就關閉,這樣緩存就會flush了。

如果是立即回顯,說明對方的調試環境里,使用了stdin.flush, 對方可能使用了一種IDLE環境。 我也不知道是哪一種。比如eclipse。

查看完整回答
反對 回復 2019-09-07
  • 3 回答
  • 0 關注
  • 1458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號