在Python中创建数组,同时保留行格式

时间:2015-04-08 14:47:09

标签: python arrays

我有一个格式如下的文件:

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=.....]

我的目标是随后从每个线阵列中提取特定的部分。

感谢任何帮助!

1 个答案:

答案 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>