我有一个包含这样的Python只在文本文件中的特定位置
AA 331
line1 ...
line2 ...
% information here
AA 332
line1 ...
line2 ...
line3 ...
%information here
AA 1021
line1 ...
line2 ...
% information here
AA 1022
line1 ...
% information here
AA 1023
line1 ...
line2 ...
% information here
我想只为来之后是行后最小整数“信息”进行操作的数据的文本文件执行操作"AA 331"
和线"AA 1021"
和不经过线"AA 332"
,"AA 1022"
和"AA 1023"
。
诗这是大文件只是一个样本数据
下面的代码我尝试分析文本文件,并得到它们之后的列表“列表1”,“AA”,并在第二个功能我组的整数他们在“list2”中获得最小的价值。这将返回像[331,1021,...]的整数。所以我想到了提取“AA 331”后面的行,然后执行操作,但我知道如何继续。
from itertools import groupby
def getlineindex(textfile):
with open(textfile) as infile:
list1 = []
for line in infile :
if line.startswith("AA"):
intid = line[3:]
list1.append(intid)
return list1
def minimalinteger(list1):
list2 = []
for k,v in groupby(list1,key=lambda x: x//10):
minimalint = min(v)
list2.append(minimalint)
return list2
列表2包含了来自 “AA” 之后的最小整数[331,1021,..]
我认为你的问题可以使用一些澄清。你指定的行后面的'最小整数'是多少?在哪一行发生,并且该位置是否一致/可靠?此外,你是如何提出'AA 331'和'AA 1021'作为你想要处理的数据的指标的?这是你期望作为人类输入接受的东西,还是有计算方式来确定它? – bmhkim 2015-02-06 21:49:37
我的意思是331 <332和1021 <1022 <1023的最小整数。所以我想要在AA 331块之后的“%information”行执行操作,该行在AA 332之前。 – Danira 2015-02-06 21:53:32
当然,您会注意到331 <332 <1021 <1022 <1023.那么为什么要处理1021? – bmhkim 2015-02-06 22:00:27