到目前为止,我有以下代码:
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] ]