如何使用python从文件中复制特定数据?

时间:2012-07-25 13:46:19

标签: python

我有一些大型数据文件,我想复制每行的某些数据,基本上是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

2 个答案:

答案 0 :(得分: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))

有关详细信息,请参阅regex module documentation

答案 1 :(得分:1)

如果你的所有行都有给定的格式,那么简单的拆分就足够了:

#split by '|' and the result by space
ids = [x.split()[0] for x in line.split("|")[1:]]