0
我正在使用python的re模塊來查找文本文件中2個模式的所有實例。我有一個spinbox,它返回已被選中的值。如何使用str.replace從spinbox獲取值,然後在文本文件中替換該值的實例?
from tkinter import *
import re
root = Tk()
num_names = open('numerical_sat_names.txt', 'r')
num_file = num_names.read()
satellite_TLE = open('TLE.txt', 'r')
TLE_file = satellite_TLE.read()
text = TLE_file
choice_var = tk.StringVar()
class FindTLE(tk.Frame):
pattern1 = r'(^.) (.....)(.) (........) (..)(............) (..........) (........) (........) (.) (....)(.$)'
pattern2 = r'(^.) (.....) (........) (........) (.......) (........) (........) (...........)(.....)(.$)'
multiline1 = re.compile(pattern1, re.MULTILINE)
multiline2 = re.compile(pattern2, re.MULTILINE)
print ('Multiline :')
for match in multiline1.findall(text):
print (' %r' % (match,))
if not pattern1:
raise TypeError('Bad line1 %s' % multiline1)
print ('Multiline2 :')
for match in multiline2.findall(text):
print (' %r' % (match,))
if not pattern2:
raise TypeError('Bad line2 %s' % multiline2)
def TLE_selected():
selected = str(choice_var.get())
print('selected :', selected)
str.replace('.....U', selected[1])
TLE_spinbox=tk.Spinbox(textvariable=choice_var, values=num_file,
command=TLE_selected)
TLE_spinbox.pack()
root.mainloop()
我希望spinbox的值替換文本文件中的內容; 'TLE.txt';也就是(..... U)。但是我得到的類型錯誤:
str.replace('.....U', selected[1])
TypeError: replace() takes at least 2 arguments (1 given)
的(「..... U」)應與‘模式1’的部分對應,並按照同樣的結構已被選中。
我對python很新穎,因此希望得到一些關於我在做什麼錯誤的指導,以及如何解決這個問題。
你沒有任何方法來創建類'FindTLE' - 這是沒有意義的 - 你可以創建功能,並得到同樣的結果 – furas
'replace'即可。在兩個方法中使用''Hello「.replace(」H「,」h「)''需要兩個參數或'str.replace(」Hello「,」H「,」h「)'需要3個參數 - 這裏是你的問題。 – furas
'choice_var'是'StringVar',它總是返回'string',所以你不需要'str()' – furas