亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一段很強大的python腳本求解釋

一段很強大的python腳本求解釋

桃花長相依 2018-07-18 07:04:42
#templates.py import fileinput, re field_pat = re.compile(r'\[(.*?)\]') scope = {} def replacement(match):   code = match.group(1)   try:     return str(eval(code, scope))   except SyntaxError:     exec code in scope     return ''      lines = [] for line in fileinput.input():   lines.append(line) text = ''.join(lines) print field_pat.sub(replacement, text)現在編輯兩個文件,通過調用這個腳本來處理: cat > magnus.txt [name = 'Magnus Lie Hetland' ] [email = '[email protected]' ] [language = 'python' ] cat > template.txt [import time] Dear [name]. I would like to learn how to program. I hear you use the [language] a lot. Please help me to learn Oscar 現在來調用: python templates.py magnus.txt template.txt 結果: Dear Magnus Lie Hetland. I would li? to learn how to program. I hear you use the python a lot. Please help me to learn Oscar templates.py腳本把template.txt中[]定義的變量替換成了magnus.txt中定義好的值。
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

eval可以根據=將“變量”替換為值,很強大. 謝謝 

查看完整回答
反對 回復 2018-07-18
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

eval只是將一個字符串當成python代碼來執行,并返回語句的返回值,本身沒有替換的作用

查看完整回答
反對 回復 2018-07-18
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

讀入兩個文件之后用正則表達式匹配方括號,eval執行方括號內的內容,所以 magnus.txt就給name等變量賦值,sub的作用則是將正則表達式匹配出的內容(包括方括號)替換為eval語句的返回值。賦值語句的返回值是None,所以magnus.txt全部被替換掉,template.txt中的變量替換為前面賦值過的變量值。

簡答說就是,把方括號和里面的內容替換成方括號里的內容作為Python語句的返回值


查看完整回答
反對 回復 2018-07-18
  • 3 回答
  • 0 關注
  • 509 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號