拆分命令问题

2024-10-01 07:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用分割命令时遇到问题。 输入字符串如下:

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

我想从这根绳子上取下2027 我的命令是:line.split(':',4)[1].split()[0] 但是,它不起作用。输出为“1”

然后我切换到line.split(':',4) 输出仍然是'1',我看到第一步分割已经有问题了。在

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

^{pr2}$

我被这个分开的命令弄糊涂了!(我以前也问过类似的问题,当时“分割指挥”起作用了) 谢谢


Tags: 字符串命令linemdsplitnmcbacda
3条回答

试试这个:

#!/usr/bin/python

line = '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'

print line.split(':')[4].split()[0]

我不知道你为什么要这样访问包含2027的令牌:

^{pr2}$

而不是这样:

line.split(':')[4]

我想你可能对分裂的工作原理感到困惑。Python split function的最后一个参数是要执行的最大拆分数。在

看来你想要的是

line.split(':',4)[4].split()[0]

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

^{pr2}$

如果将元素[1]从返回值中拉出,则得到“1”。我不明白你为什么对此感到惊讶。在

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

>>> line.split(':',4)[4]
'2027 ...'

然后您可以在空间上拆分该元素,并从中获取元素[0]以生成结果。在

如果完全不传递分割限制值,则会得到相同的结果:

>>> line.split(':')[4].split()[0]
'2027'

split的第二个参数是要执行的最大拆分数,因此您可能不希望在本例中使用它。要在执行拆分后访问第五个元素,请执行以下操作:

line.split(":")[4]

不管怎样,您可能想要的是首先按空格分割(您可以不使用参数来进行分割),然后按冒号分割。这可以在一行上完成,如下所示:

^{pr2}$

相关问题 更多 >