我有一個包含這樣的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