在 python 中的列表中插入一个字符

insert a character into a list in python

我有这个列表,在每个 space 之后我需要插入;这样我以后就可以根据我的 requirements.I 在我的代码中分隔列表,我尝试了 split() 和 join 方法,但发现它们仅适用于字符串,所以我该如何插入;而不是 space

 ['48998.tyrone-cluster       gic1_nwgs        mbupi           18:45:44 R qp32           \n', 
'48999.tyrone-cluster       gic2_nwgs        mbupi                  0 Q batch          \n',  
'49005.tyrone-cluster       ...01R-1849-01_2 mcbkss          00:44:23 R qp32           \n',
'49032.tyrone-cluster       gaussian_top.sh  chemraja               0 Q qp32           \n', 
'49047.tyrone-cluster       jet_egrid        asevelt         312:33:0 R qp128          \n'] 

输出必须是这样的

['48998.tyrone-cluster;gic1_nwgs;mbupi;18:45:44;R;qp32', 
'48999.tyrone-cluster;gic2_nwgs;mbupi;0;Q;batch',  
'49005.tyrone-cluster;...01R-1849-01_2;mcbkss;00:44:23;R;qp32',
'49032.tyrone-cluster;gaussian_top.sh;chemraja;0;Q;qp32', 
'49047.tyrone-cluster;jet_egrid;asevelt;312:33:0;R;qp128']

在空白处用 .split() 拆分,并使用 ';' 作为分隔符加入:

>>> transformed = [ ';'.join(item.split()) for item in original ]
>>> pprint(transformed)
['48998.tyrone-cluster;gic1_nwgs;mbupi;18:45:44;R;qp32',
 '48999.tyrone-cluster;gic2_nwgs;mbupi;0;Q;batch',
 '49005.tyrone-cluster;...01R-1849-01_2;mcbkss;00:44:23;R;qp32',
 '49032.tyrone-cluster;gaussian_top.sh;chemraja;0;Q;qp32',
 '49047.tyrone-cluster;jet_egrid;asevelt;312:33:0;R;qp128']

split 在空白处然后使用 ;:

重新加入
l[:] = [";".join(line.split())for line in l]
print(l)

['48998.tyrone-cluster;gic1_nwgs;mbupi;18:45:44;R;qp32', '48999.tyrone-cluster;gic2_nwgs;mbupi;0;Q;batch', '49005.tyrone-cluster;...01R-1849-01_2;mcbkss;00:44:23;R;qp32', '49032.tyrone-cluster;gaussian_top.sh;chemraja;0;Q;qp32', '49047.tyrone-cluster;jet_egrid;asevelt;312:33:0;R;qp128']

或者使用 enumerate 和一个 for 循环:

for ind, line in enumerate(l):
    l[ind] = ";".join(line.split())
print(l)

两种方法都会更新原始列表。

试试这个

import re
out_list = []
for word in in_list:
  out_list.append(re.sub(' +',' ',word).replace(' \n','').replace(' ',';'))
print "Result",out_list