关于python: split的用法,在后面的括号不同,输出的也不一样?

python: split的用法,在后面的括号不同,输出的也不一样,大神能不能帮忙解释一下下面的例子。


沧海一幻觉
浏览 1399回答 3
3回答

aluckdog

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', '']

阿晨1998

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

MMTTMM

很有趣的问题,想法也不错。体现出编程的乐趣。的确是^z后再出结果。这种做法实际上在linux下,利用管道处理效率很高。 很高,有时候超出想象。不过,如果你自己在命令行直接输入,因为有缓存(所有操作系统的标准输入输出一定有缓存),所以除非你用flush,一般缓存不满不会真的向前传送。所以^z表示文件结尾,stdin就关闭,这样缓存就会flush了。如果是立即回显,说明对方的调试环境里,使用了stdin.flush, 对方可能使用了一种IDLE环境。 我也不知道是哪一种。比如eclipse。
打开App,查看更多内容
随时随地看视频慕课网APP