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