为了账号安全,请及时绑定邮箱和手机立即绑定

关于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 关注
  • 1398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信