假如有個(gè)任務(wù): 給定一個(gè)字符串,通過查詢字典,來替換給定字符中的變量。如果使用通常的方法:
>>> "This is a %(var)s" % {"var":"dog"}'This is a dog'>>>其實(shí)可以使用string.Template類來實(shí)現(xiàn)上面的替換
>>> from string import Template>>> words = Template("This is $var")>>> print(words.substitute({"var": "dog"})) # 通過字典的方式來傳參This is dog>>> print(words.substitute(var="dog")) # 通過關(guān)鍵字方式來傳參This is dog>>>在創(chuàng)建Template實(shí)例時(shí),在字符串格式中,可以使用兩個(gè)美元符來代替$,還可以用${}將 變量擴(kuò)起來,這樣的話,變量后面還可以接其他字符或數(shù)字,這個(gè)使用方式很像Shell或者Perl里面的語(yǔ)言。下面以letter模板來示例一下:
>>> from string import Template>>> letter = """Dear $customer,... I hope you are having a great time!... If you do not find Room $room to your satisfaction, let us know.... Please accept this $$5 coupon.... Sincerely,... $manager,... ${name}Inn""">>> template = Template(letter)>>> letter_dict = {"name": "Sleepy", "customer": "Fred Smith", "manager": "Tom Smith", "room": 308}>>> print(template.substitute(letter_dict))Dear Fred Smith,I hope you are having a great time!If you do not find Room 308 to your satisfaction, let us know.Please accept this $5 coupon. Sincerely, Tom Smith, SleepyInn>>>有時(shí)候,為了給substitute準(zhǔn)備一個(gè)字典做參數(shù),最簡(jiǎn)單的方法是設(shè)定一些本地變量,然后將這些變量交給local()(此函數(shù)創(chuàng)建一個(gè)字典,字典中的key就是本地變量,本地變量的值通過key來訪問)。
>>> locals() # 剛進(jìn)入時(shí),沒有其他變量{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}>>> name = "Alice" # 創(chuàng)建本地變量name >>> age = 18 # 創(chuàng)建本地變量age>>> locals() # 再執(zhí)行l(wèi)ocals()函數(shù)就可以看到name, age的鍵值隊(duì){'name': 'Alice', '__builtins__': <module '__builtin__' (built-in)>, 'age': 18, '__package__': None, '__name__': '__mai__', '__doc__': None}>>> locals()["name"] # 通過鍵name來獲取值'Alice'>>> locals()["age"] # 通過鍵age來獲取值18>>>有了上面的例子打底來看一個(gè)示例:
>>> from string import Template>>> msg = Template("The square of $number is $square")>>> for number in range(10):... square = number * number... print msg.substitute(locals())...The square of 0 is 0The square of 1 is 1The square of 2 is 4The square of 3 is 9另外一種方法是使用關(guān)鍵字參數(shù)語(yǔ)法而非字典,直接將值傳遞給substitute。
新聞熱點(diǎn)
疑難解答
圖片精選