これまでのところ、次のコードがあります。
import sys
from Tkinter import *
import tkFileDialog
from tkFileDialog import askopenfile # Open dialog box
fen1 = Tk() # Create window
fen1.title("Optimisation") # Window title
menu1 = Menu(fen1)
def open():
filename = askopenfile(filetypes=[("Text files","*.txt")], mode='r')
filename.seek(0)
numligne = 0
line = []
ok = 0
k = -1
while (ok == 0) & (k == -1):
line = filename.readline()
k = line.find( "*load" )
if k == 0 :
l = filename.readlines()
fen1.mainloop()
検索しているテキスト ファイルは、次のような形式です。
*test
1 2 3 4
*load
2 7 200
3 7 150
*stiffness
2 9 8 7
etc..
これまでのところ、「*load」で始まる行を見つけることができましたが、「*load」と「*stiffness」の間の値を a、b、c などの変数に割り当てたいと考えています。私の問題は、このロード セクションに複数の行がある可能性があり、毎回それぞれを検出し、行の値を分割して名前を付ける必要があることです。誰かがループやトリックを行う同様の何かを説明するのを手伝ってくれたら、とても感謝しています! ありがとうございました!
更新: 同じテキスト ファイルでいくつかの個別のセクションを見つけたいという問題があります。'*geo' と '*house' の間、および '*name' と '*surname' の間の行をさらに検索するループを作成するにはどうすればよいですか? 完全に別の定義を作成しようとしましたが、使用するコード行を最小限に抑えたいと思います...ありがとう! 同様の構造を使用してきたコード (元の質問に提供されているように、mgilson のおかげです!) のため、これらのタイプのコードを編集したいと考えています。
def parse_file(ff):
out=[]
append=False
for line in ff:
if(append and line.strip()):
out.append(line)
if(line.startswith('*load')):
append=True
elif(line.startswith('*stiffness')):
return [map(int,x.split()) for x in out[:-1] ]