拆分命令问题

Loo*_*ast 1 python split

使用split命令时遇到问题.输入字符串如下:

080821_HWI-EAS301_0002_30ALBAAXX:1:8:1649:2027  83  chr10   42038185    255 36M =   42037995    -225    GCCAGGTTTAATAAATTATTTATAGAATACTGCATC    @?DDEAEFDAD@FBG@CDA?DBCDEECD@D?CBA>A    NM:i:0  MD:Z:36
Run Code Online (Sandbox Code Playgroud)

我想从这个字符串中抓取'2027'我的命令是:line.split(':',4)[1].split()[0] 但是,它不起作用.输出为'1'

然后我切换到line.split(':',4) And输出仍为'1',我看到第一步拆分已经存在问题.

但是,当我尝试时line.split(':',1),我得到了预期的结果:

1:8:1649:2027   83  chr10   42038185    255 36M =   42037995-225    GCCAGGTTTAATAAATTATTTATAGAATACTGCATC    @?DDEAEFDAD@FBG@CDA?DBCDEECD@D?CBA>A    NM:i:0  MD:Z:36
Run Code Online (Sandbox Code Playgroud)

我对这个拆分命令感到困惑!(之前我问了类似的问题,当时分裂命令工作)谢谢

Dav*_*sta 6

看来你想要的是

line.split(':',4)[4].split()[0]
Run Code Online (Sandbox Code Playgroud)

要拆分的数字参数表示将发生的最大拆分数.所以你有了:

>>> line='080821_HWI-EAS301_0002_30ALBAAXX:1:8:1649:2027 ...'
>>> line.split(':',4)
['080821_HWI-EAS301_0002_30ALBAAXX', '1', '8', '1649', '2027 ...']
Run Code Online (Sandbox Code Playgroud)

如果从元素[1]中取出该返回值,则得到"1".我不明白为什么你对此感到惊讶.

由于您允许最多4个拆分,并且您想要的项目将是最后一个,所以您想要的下标是[4]:

>>> line.split(':',4)[4]
'2027 ...'
Run Code Online (Sandbox Code Playgroud)

然后你可以在空间上拆分它并从中获取元素[0]来产生你的结果.

如果您根本没有传递分割限制值,则会得到相同的结果:

>>> line.split(':')[4].split()[0]
'2027'
Run Code Online (Sandbox Code Playgroud)