日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 如何在字符串中插入變量

瀏覽:29日期:2022-07-15 15:19:00

問題

你想創建一個內嵌變量的字符串,變量被它的值所表示的字符串替換掉。

解決方案

Python并沒有對在字符串中簡單替換變量值提供直接的支持。 但是通過使用字符串的 format() 方法來解決這個問題。比如:

>>> s = ’{name} has {n} messages.’>>> s.format(name=’Guido’, n=37)’Guido has 37 messages.’>>>

或者,如果要被替換的變量能在變量域中找到, 那么你可以結合使用 format_map() 和 vars() 。就像下面這樣:

>>> name = ’Guido’>>> n = 37>>> s.format_map(vars())’Guido has 37 messages.’>>>

vars() 還有一個有意思的特性就是它也適用于對象實例。比如:

>>> class Info:... def __init__(self, name, n):... self.name = name... self.n = n...>>> a = Info(’Guido’,37)>>> s.format_map(vars(a))’Guido has 37 messages.’>>>

format 和 format_map() 的一個缺陷就是它們并不能很好的處理變量缺失的情況,比如:

>>> s.format(name=’Guido’)Traceback (most recent call last): File '<stdin>', line 1, in <module>KeyError: ’n’>>>

一種避免這種錯誤的方法是另外定義一個含有 __missing__() 方法的字典對象,就像下面這樣:

class safesub(dict):'''防止key找不到'''def __missing__(self, key): return ’{’ + key + ’}’

現在你可以利用這個類包裝輸入后傳遞給 format_map() :

>>> del n # Make sure n is undefined>>> s.format_map(safesub(vars()))’Guido has {n} messages.’>>>

如果你發現自己在代碼中頻繁的執行這些步驟,你可以將變量替換步驟用一個工具函數封裝起來。就像下面這樣:

import sysdef sub(text): return text.format_map(safesub(sys._getframe(1).f_locals))

現在你可以像下面這樣寫了:

>>> name = ’Guido’>>> n = 37>>> print(sub(’Hello {name}’))Hello Guido>>> print(sub(’You have {n} messages.’))You have 37 messages.>>> print(sub(’Your favorite color is {color}’))Your favorite color is {color}>>>

討論

多年以來由于Python缺乏對變量替換的內置支持而導致了各種不同的解決方案。 作為本節中展示的一個可能的解決方案,你可以有時候會看到像下面這樣的字符串格式化代碼:

>>> name = ’Guido’>>> n = 37>>> ’%(name) has %(n) messages.’ % vars()’Guido has 37 messages.’>>>

你可能還會看到字符串模板的使用:

>>> import string>>> s = string.Template(’$name has $n messages.’)>>> s.substitute(vars())’Guido has 37 messages.’>>>

然而, format() 和 format_map() 相比較上面這些方案而已更加先進,因此應該被優先選擇。 使用 format() 方法還有一個好處就是你可以獲得對字符串格式化的所有支持(對齊,填充,數字格式化等待), 而這些特性是使用像模板字符串之類的方案不可能獲得的。

本機還部分介紹了一些高級特性。映射或者字典類中鮮為人知的 __missing__() 方法可以讓你定義如何處理缺失的值。 在 SafeSub 類中,這個方法被定義為對缺失的值返回一個占位符。 你可以發現缺失的值會出現在結果字符串中(在調試的時候可能很有用),而不是產生一個 KeyError 異常。

sub() 函數使用 sys._getframe(1) 返回調用者的棧幀。可以從中訪問屬性 f_locals 來獲得局部變量。 毫無疑問絕大部分情況下在代碼中去直接操作棧幀應該是不推薦的。 但是,對于像字符串替換工具函數而言它是非常有用的。 另外,值得注意的是 f_locals 是一個復制調用函數的本地變量的字典。 盡管你可以改變 f_locals 的內容,但是這個修改對于后面的變量訪問沒有任何影響。 所以,雖說訪問一個棧幀看上去很邪惡,但是對它的任何操作不會覆蓋和改變調用者本地變量的值。

以上就是Python 如何在字符串中插入變量的詳細內容,更多關于Python 字符串中插入變量的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产视频欧美| 日韩av午夜在线观看| 日韩久久电影| 激情欧美丁香| 亚洲精品日本| 九九九精品视频| 国产一区亚洲| 青青国产精品| 正在播放日韩精品| 国产亚洲在线观看| 国产美女精品视频免费播放软件| 日韩成人免费| 欧美日韩日本国产亚洲在线 | 99久久久久| 蜜桃久久精品一区二区| 国产精品4hu.www| 亚洲国产专区| 国产日韩欧美一区二区三区在线观看| 中文字幕一区久| 三级在线观看一区二区| 久久中文字幕一区二区三区| 欧美女激情福利| 国产精品三p一区二区| 999久久久91| 国产美女精品视频免费播放软件| 久久国产小视频| 日韩三级久久| 久久久久国产精品一区二区| 久久国产精品免费一区二区三区| 日本精品不卡| 91精品在线免费视频| 久久久久久久久丰满| 欧美久久久网站| 激情欧美一区| 久久精品国产亚洲aⅴ| 蜜臀久久99精品久久久画质超高清 | 精品视频高潮| 三级亚洲高清视频| 久久毛片亚洲| 奇米亚洲欧美| 在线视频日韩| 精品免费av在线| 国产精品久久免费视频| 午夜亚洲福利在线老司机| 红杏一区二区三区| 日韩激情中文字幕| 伊人精品视频| 午夜久久中文| 欧美aaaaaa午夜精品| 亚洲精品伊人| 欧美日韩精品免费观看视频完整| 国产一区二区三区久久| 亚洲精品影视| 欧美日韩国产传媒| 国产aa精品| 国产探花在线精品| 免费在线观看成人| 欧美理论视频| 日韩毛片视频| 免费一级欧美片在线观看网站 | 亚洲一区二区日韩| 欧美1区2区3区| 久久亚洲精精品中文字幕| 一二三区精品| 在线亚洲成人| 亚洲大片在线| 日韩av福利| 精品日韩一区| 国产精品一页| 日韩欧美高清一区二区三区| 亚洲激情中文在线| 偷拍精品精品一区二区三区| 久久久国产精品网站| 91精品丝袜国产高跟在线| 亚洲精选av| 蜜臀国产一区二区三区在线播放| 亚洲少妇诱惑| 欧美日韩国产探花| 波多野结衣一区| 亚洲高清不卡| 久久亚洲精品中文字幕蜜潮电影| av资源中文在线天堂| 国产一区二区久久久久| 国产精品xxx在线观看| 91午夜精品| 日韩国产一二三区| 日韩av网站在线免费观看| 亚洲精一区二区三区| 免费看欧美美女黄的网站| 视频一区视频二区在线观看| 亚洲欧洲一区| 亚洲资源av| 在线综合欧美| 国产婷婷精品| 亚洲最新av| 日韩激情av在线| 欧美日韩一区二区国产| 国产精品v亚洲精品v日韩精品| 国产精品免费99久久久| 国产精品1区在线| 精品国产精品国产偷麻豆 | 日产精品一区| 激情欧美一区二区三区| 免费视频国产一区| 尹人成人综合网| 亚洲一区二区小说| 深夜福利一区| 欧美日韩伊人| 精品丝袜久久| 日韩高清成人| av亚洲免费| 中文字幕视频精品一区二区三区 | 国产亚洲精品美女久久久久久久久久| 国产亚洲一区二区三区不卡| 国产精品一区免费在线| 精品国产不卡| 久久精品国产68国产精品亚洲| 99在线观看免费视频精品观看| 在线一区二区三区视频| 欧美一区自拍| 国产精品v一区二区三区| 日本精品黄色| 欧美特黄一级大片| 日韩在线一区二区| 欧美亚洲人成在线| 精品国产黄a∨片高清在线| 999视频精品| 亚洲制服欧美另类| 久久不见久久见国语| 久久久久久久欧美精品| 日韩精品亚洲一区二区三区免费| 国产精品久久久久77777丨| 国产suv精品一区| 欧美va亚洲va日韩∨a综合色| 视频一区视频二区中文| 国产精品网站在线看| 在线观看精品| 亚洲精品国产日韩| 国语精品一区| 国产99精品| 日本亚州欧洲精品不卡| 国内在线观看一区二区三区| 欧美一级精品| 日韩1区2区3区| 国产成人精品亚洲线观看| 亚洲精品888| 国产欧美日韩亚洲一区二区三区| 亚洲永久av| 亚洲精品美女91| 国产白浆在线免费观看| 日韩一区精品视频| 久久精品天堂| 亚洲一级在线| 国产中文字幕一区二区三区| 亚洲精品国产偷自在线观看| 国产日产一区| 国产精品88久久久久久| 国产日韩在线观看视频| 欧美亚洲在线日韩| 国产精品密蕾丝视频下载| 久久影视一区| 国产精品1区在线| 亚洲少妇自拍| 精品视频免费| 亚洲精品中文字幕99999| 夜鲁夜鲁夜鲁视频在线播放| 日韩av网站在线免费观看| 激情久久久久久久| 麻豆精品视频在线| 欧美特黄a级高清免费大片a级| 国产精品hd| 日韩中文字幕一区二区三区| 吉吉日韩欧美| 欧美日韩一区自拍| 国产免费成人| 久久uomeier| 国产日韩一区二区三区在线 | 久久女人天堂| 美国三级日本三级久久99| 精品三级av在线导航| 综合日韩在线| 国产一区清纯| 色欧美自拍视频| 国产精品一区亚洲| 影音先锋久久精品| 91精品国产福利在线观看麻豆| 国产精品日本一区二区三区在线 | 国产精品黄网站| 亚洲专区视频| 欧美日韩在线二区| 成人午夜亚洲| 国产午夜久久av| 综合欧美亚洲| 午夜在线播放视频欧美| 亚洲a一区二区三区| 水蜜桃久久夜色精品一区| 欧美精品中文字幕亚洲专区| 免费看日韩精品| 亚洲欧洲另类| 久久蜜桃av|