上一講,主要介紹了用%表達的一種輸出格式化表示式。在那一講最後又拓展了一點東西,拓展的那點,名曰:格式化方法。因為它知識上是使用了str的format方法。
現在我們就格式化方法做乙個詳細一點的交代。
所謂格式化方法,就是可以先建立乙個輸出字串的模板,然後用format來填充模板的內容。
>>> #先做乙個字串模板
>>> template = "my name is . my website is . i am writing ."
>>> #用format依次對應模板中的序號內容
>>> template.format("qiwsir","qiwsir.github.io","python")
'my name is qiwsir. my website is qiwsir.github.io. i am writing python.'
當然,上面的操作如果你要這樣做,也是可以的:
>>> "my name is . my website is . i am writing .".format("qiwsir","qiwsir.github.io","python")
'my name is qiwsir. my website is qiwsir.github.io. i am writing python.'
這些,跟用%寫的表示式沒有什麼太大的區別。不過看官別著急,一般小孩子都區別不到,長大了才有區別的。慢慢看,慢慢實驗。
除了可以按照對應順序(類似佔位符了)填充模板中的位置之外,還能這樣,用關鍵字來指明所應該田中的內容。
>>> template = "my name is . my website is "
>>> template.format(site='qiwsir.github.io', name='qiwsir')
'my name is qiwsir. my website is qiwsir.github.io'
>>> " is in . are my number.".format("seven",number=7,all=[1,2,3,4,5,6,7,8,9,0])
'7 is in [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]. seven are my number.'
是不是開始感覺有點意思了?看輸出結果,就知道,經過format方法得到是乙個新的str。
有這樣乙個要求:在輸出中,顯示出乙個單詞的第乙個字母和第三個個字母。比如單詞python,要告訴看官,第一字母是p,第三個字母是t。
這個問題並不難。實現方法也不少,這裡主要是要展示一下偏移量在format中的應用。
>>> template = "first=, third="
>>> template.format(word)
'first=p, third=t'
list也是序列型別的,其偏移量也可。
>>> word_lst = list(word)
>>> word_lst
['p', 'y', 't', 'h', 'o', 'n']
>>> template
'first=, third='
>>> template.format(word_lst)
'first=p, third=t'
對上面的綜合一下,稍微囉嗦一點的實驗:
>>> template = "the word is , its first is . another word is , its second is ."
>>> template.format("python","learn")
'the word is python, its first is p. another word is learn, its second is e.'
"qiwsir's first is q"
值得注意的是,偏移量在序列型別的資料中,因為可以是負數,即能夠從右邊開始計數。
>>> word
'python'
>>> word[-1]
'n'>>> word[-2]
'o'
但是,在模板中,無法使用負數的偏移量。
>>> "first=, end=".format(word) #報錯
traceback (most recent call last):
file "", line 1, in typeerror: string indices must be integers, not str
>>> "first=, end=".format(word) #把-1改為5就可以了。
'first=p, end=n'
當然,放到模板外面是完全可行的。這樣就好了:
>>> "first=, end=".format(word[0],word[-1])
'first=p, end=n'
直接上實驗,先觀察,再得結論
>>> myinfo
>>> template = "i am "
>>> template.format(myinfo)
'i am qiwsir'
>>> template = "i am . my qq is "
>>> template.format(myinfo,qq="26066913")
'i am qiwsir. my qq is 26066913'
>>> myinfo
'my website is qiwsir.github.io, and i like python'
看標題不懂在說什麼。那就看實驗吧。
>>> import math
>>> "pi is ".format(pi=math)
'pi is 3.14159265359'
>>> import sys,math
>>> 'pi is . my lptop runs '.format(math,sys)
'pi is 3.14159265359. my lptop runs linux2'
看官理解了吧。
在這個世界上的數學領域,除了有我們常常用到的十進位制、十二進位制(幾點了,這是你我常用到的,鐘表面就是12進製)、六十進位制(這個你也熟悉的)外,還有別的進製,比如二進位制、八進位制、十六進製制等等。此處不談進製問題,有興趣詳細了解,請各自google。不過,進製的確在計算機上很重要的。因為機器在最底層是用二進位制的。
這裡只是說明一下輸出時候的進製問題。
>>> ", , ".format(255,255,255)
'ff, 377, 11111111'
順便補充,對於數的格式化方法輸出和格式化表示式一樣,就不贅述了。
在格式化方法中,還能夠指定字元寬度,左右對齊等簡單排版格式,不過,在我的經驗中,這些似乎用的不怎麼多。如果看官需要,可以google或者到官方文件看看即可。
關於格式化表示式和格式化方法,有的人進行了不少比較,有的人說用這個,有的人傾向用那個。我的建議是,你用哪個順手就用哪個。切忌門派之見呀。不過,有人傳說格式化表示式可能在將來某個版本中廢除。那是將來的事情,將來再說好了。現在,你就撿著順手的用吧。
零基礎學Python
零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...
怎樣從零基礎學黑客
可以說想學黑客技術,要求你首先是乙個 t 字型人才,也就是說電腦的所有領域你都能做的來,而且有一項是精通的。因此作為乙個零基礎的黑客愛好者來說,沒有良好的基礎是絕對不行的,下面我就針對想真正學習黑客的零基礎朋友製作乙個學習方案,注意!我是指 真正想學黑客技術 的朋友,如果你只是想玩玩,花一上午時間學...
零基礎學python 一
每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...