У меня пока есть следующий код:
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» и «* жесткость» для таких переменных, как a, b, c. Моя проблема в том, что в этом разделе загрузки может быть несколько строк, и мне нужно каждый раз обнаруживать каждую, разделять значения в строках и давать им имя. Если кто-то может помочь объяснить цикл или что-то подобное, что поможет, я был бы очень благодарен! Спасибо!
ОБНОВЛЕНИЕ: у меня проблема, когда я хочу найти НЕСКОЛЬКО отдельных разделов в одном и том же текстовом файле. Как я могу создать цикл для дальнейшего поиска строк между «*гео» и «*дом», а также «*имя» и «*фамилия»? Я попытался создать совершенно отдельное определение, но хотел бы свести к минимуму количество строк кода, которые я использую... Спасибо! Код Я использовал аналогичную структуру (как предусмотрено для моего исходного вопроса, спасибо 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] ]
optimisation
по-французски означаетoptimization
. Если нет, то, скорее всего, да, потому что об этом говорит заголовок окна. :П - person jadkik94   schedule 12.06.2012