基于分号分隔列表元素

2024-09-27 02:26:44 发布

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

我有一个列表,它是从一个文件中以

 ['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', '49052.tyrone-cluster;case3sqTS1e-4;mecvamsi;0;Q;qp32\n', '49053.tyrone-cluster;...01R-1850-01_1;mcbkss;0;Q;batch\n', '49054.tyrone-cluster;...01R-1850-01_2;mcbkss;0;Q;batch\n']

在这个列表中,我需要根据分离元素;并将列表的输出作为

输出应为:

^{pr2}$

到目前为止,我尝试过这样的代码,但是没有得到想要的输出。在

parsed_data = [content[0].split(".")[0], content[3], content[4], content[5].strip()]

Tags: 文件列表topshbatchgaussiancontentcluster
3条回答
L = ['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', '49052.tyrone-cluster;case3sqTS1e-4;mecvamsi;0;Q;qp32\n', '49053.tyrone-cluster;...01R-1850-01_1;mcbkss;0;Q;batch\n', '49054.tyrone-cluster;...01R-1850-01_2;mcbkss;0;Q;batch\n']

answer = [operator.itemgetter(0,3,4,5)(s.split(';')) for s in L]
answer = [(t[0].split('.')[0], t[1], t[2], t[3].strip()) for t in answer]

输出:

^{pr2}$
list_of_lists = [item.split(';') for item in original_list]
list_of_tuples_final = [(li[0].split('.')[0], li[3], li[4], li[5].strip()) for li in list_of_lists]

输出是元组的列表,其行如下:

^{pr2}$

我喜欢分解一个函数来进行解析的想法。然后,您可以将该函数用于map,或在列表理解中使用。在

inval = ['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', '49052.tyrone-cluster;case3sqTS1e-4;mecvamsi;0;Q;qp32\n', '49053.tyrone-cluster;...01R-1850-01_1;mcbkss;0;Q;batch\n', '49054.tyrone-cluster;...01R-1850-01_2;mcbkss;0;Q;batch\n']

def parse(raw):
    parts = raw.strip().split(';')
    _id, _ = parts[0].split('.')
    return _id, parts[3], parts[4], parts[5]

print map(parse, inval)

# or 
# print [parse(val) for val in inval]

输出

^{pr2}$

就我个人而言,我更喜欢这种解析的可读性。嵌套列表理解或更高级的技术是完全可以接受的,但是简单、易于理解的代码在我的书中具有极端的价值。在

相关问题 更多 >

    热门问题