2

我有一些大数据文件,我想复制每一行的某些数据,基本上是一个 ID 代码。ID 代码的一侧有一个|,另一侧有一个空格。我想知道是否可以只提取ID。我还有两个数据文件,一个每行有 4 个 ID 代码,另一个每行有 23 个。

目前我正在考虑从数据文件中复制每一行,然后从彼此中减去字符串以获得所需的 ID 代码,但肯定有更简单的方法!帮助?

这是我正在使用的数据文件中的一行示例

cluster8032:  WoodR1|Wood_4286 Q8R1|EIK58010 F113|AEV64487.1 NFM421|PSEBR_a4327

从这一行开始,我想在单独的行上输出

Wood_4286
EIK58010
AEV644870.1
PSEBR_a4327
4

2 回答 2

5

使用正则表达式模块来完成这样的任务。以下代码向您展示了如何从字符串中提取 ID(适用于任意数量的 ID,只要它们的结构相同)。

import re
s = """cluster8032:  WoodR1|Wood_4286 Q8R1|EIK58010 F113|AEV64487.1 NFM421|PSEBR_a4327"""
results = re.findall('\|([^ ]*)',s) #list of ids that have been extracted from string
print('\n'.join(results)) #pretty output

输出:

Wood_4286
EIK58010
AEV64487.1
PSEBR_a4327

要将输出写入文件:

with open('out.txt', mode = 'w') as filehandle:
    filehandle.write('\n'.join(results))

有关详细信息,请参阅正则表达式模块文档

于 2012-07-25T13:57:19.677 回答
1

如果您的所有行都具有给定的格式,则简单的拆分就足够了:

#split by '|' and the result by space
ids = [x.split()[0] for x in line.split("|")[1:]]
于 2012-07-25T14:14:26.750 回答