我有下面的代碼至今:找到的代碼的某一塊文本
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] ]
另外,是不是優化? – Digitalis
@Digitalis如果你正在談論這個詞,'optimisation'是''優化'的法語。如果不是那麼,最有可能的是,因爲這是窗口標題所說的。 :P – jadkik94
是的,我在英語和法語之間切換......因此,我現在在各種拼寫之間感到困惑.. – user2063