我正在做大學作業,由于我們被排除在使用任何網路報廢庫之外,我僅限于正則運算式,我撰寫了當前代碼(請原諒格式不佳,我還是很新):
def print_ticket():
if event.get() == 1:
web_page = urlopen(url1)
html_code = web_page.read().decode("UTF-8")
web_page.close()
event_title = findall('<h6.*>(. )</h6>', html_code)[0]
event_image = findall('<img.* src="([^"] )".*>', html_code)[4]
event_url = 'https://suncorpstadium.com.au/what-s-on.aspx'
event_details = findall('<h7.*>(. )</h7>', html_code)[1]
filename = event_title.replace(' ', '_') '_Ticket.html'
html_file = open(filename, 'w')
html_file.write(ticket_template.replace('EVENT TITLE', event_title ' Ticket'))
html_file.write(ticket_template.replace('IMAGE', event_image))
html_file.write(ticket_template.replace('DATE TIME', event_details))
我的問題是,每次我在我的 GUI 中運行該事件時,我的 Web 檔案都會列印 3 組不同的模板集,其中 .write 替換發生在每個部分。
有沒有辦法.replaces一次制作多個而不列印我的模板的多個副本?

uj5u.com熱心網友回復:
問題是您呼叫了write3 次,而您只需要呼叫一次。所以你可以做什么:
ticket_template = ticket_template.replace('EVENT TITLE', event_title ' Ticket')
ticket_template = ticket_template.replace('IMAGE', event_image)
ticket_template = ticket_template.replace('DATE TIME', event_details)
html_file.write(ticket_template)
這樣它就可以作業了,你只會得到ticket_template. 您也可以將其減少為單線,但它看起來不清晰
html_file.write(ticket_template.replace('EVENT TITLE', event_title ' Ticket').replace('IMAGE', event_image).replace('DATE TIME', event_details))
uj5u.com熱心網友回復:
您可以使用Python 3.6中引入的“f-string”或格式化字串文字來完成此操作。要控制其評估,必須將其指定為從函式回傳的結果,如下面的示例代碼所示。請注意,使用的變數名稱不必如圖所示——我這樣做只是為了更容易發現它們的使用位置。lambdaALL_CAPS
ticket_template = lambda: f'''\
Congratulations! Your ticket to {EVENT_TITLE} has been booked!
{IMAGE}
{DATE} {TIME}
'''
filename = 'whatever.html'
with open(filename, 'w') as html_file:
EVENT_TITLE = 'Some event title'
IMAGE = 'Picture of event'
DATE, TIME = '29/05', '4:00 PM'
filled_in_ticket = ticket_template() # *Call* the lambda function.
html_file.write(filled_in_ticket)
print('fini')
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482877.html
上一篇:TaipyGUI中的地圖
