我有一个格式如下的文件:
unitig_19 <tab> . <tab> region 13221 13240 0.00 + <tab> . <tab> cov2=.....
unitig_19 <tab> . <tab> region 13241 13260 0.00 + <tab> . <tab> cov2=.....
unitig_19 <tab> . <tab> region 13261 13280 0.00 + <tab> . <tab> cov2=.....
等等。
如何在保留格式的同时创建阵列,而不是将所有信息都塞进一条大线?像这样:
[unitig_19, ., region, 13221, 13240, 0.00, +, ., cov2=.....]
[unitig_19, ., region, 13241, 13260, 0.00, +, ., cov2=.....]
[unitig_19, ., region, 13261, 13280, 0.00, +, ., cov2=.....]
我的目标是随后从每个线阵列中提取特定的部分。
感谢任何帮助!
答案 0 :(得分:0)
您可以将正则表达式与re.split
函数一起使用:
>>> s="""unitig_19 <tab> . <tab> region 13221 13240 0.00 + <tab> . <tab> cov2=
... unitig_19 <tab> . <tab> region 13241 13260 0.00 + <tab> . <tab> cov2=
... unitig_19 <tab> . <tab> region 13261 13280 0.00 + <tab> . <tab> cov2="""
>>> import re
>>> [[i for i in j if i] for j in [re.split(r'<.*?>| {1,}',line) for line in s.split('\n')]]
[['unitig_19', '.', 'region', '13221', '13240', '0.00', '+', '.', 'cov2='],
['unitig_19', '.', 'region', '13241', '13260', '0.00', '+', '.', 'cov2='],
['unitig_19', '.', 'region', '13261', '13280', '0.00', '+', '.', 'cov2=']]
注意如果<tab>
为\t
,则需要将模式中的<.*?>
更改为\t
。< / p>