pythonformat格式化輸出
從格式化表示式到方法
format:格式化方法。因為它知識上是使用了str的__format__方法。
基本的操作
所謂格式化方法,就是可以先建立一個輸出字串的模板,然後用format來填充模板的內容。
>>> #先做一個字串模板
>>> template = "My name is {0}. My website is {1}. I am writing {2}."
>>> #用format依次對應模板中的序號內容
>>> template.format("hiekay","hiekay.github.io","python")
`My name is hiekay. My website is hiekay.github.io. I am writing python.`
當然,上面的操作如果你要這樣做,也是可以的:
>>> "My name is {0}. My website is {1}. I am writing {2}.".format("hiekay","hiekay.github.io","python")
`My name is hiekay. My website is hiekay.github.io. I am writing python.`
除了可以按照對應順序(類似佔位符了)填充模板中的位置之外,還可以用關鍵字來指明所應該填寫的內容。
>>> template = "My name is {name}. My website is {site}"
>>> template.format(site=`hiekay.github.io`, name=`hiekay`)
`My name is hiekay. My website is hiekay.github.io`
關鍵詞所指定的內容,也不一定非是str,其它的資料型別也可以。此外,關鍵詞和前面的位置編號,還可以混用。比如:
>>> "{number} is in {all}. {0} 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={0[0]}, Third={0[2]}"
>>> template.format(word)
`First=p, Third=t`
list也是序列型別的,其偏移量也可。
>>> word_lst = list(word)
>>> word_lst
[`p`, `y`, `t`, `h`, `o`, `n`]
>>> template
`First={0[0]}, Third={0[2]}`
>>> template.format(word_lst)
`First=p, Third=t`
對上面的綜合一下,稍微囉嗦一點的實驗:
>>> template = "The word is {0}, Its first is {0[0]}. Another word is {1}, Its second is {1[1]}."
>>> template.format("python","learn")
`The word is python, Its first is p. Another word is learn, Its second is e.`
>>> "{name}`s first is {name[0]}".format(name="hiekay") #指定關鍵詞的值的偏移量
"hiekay first is h"
值得注意的是,偏移量在序列型別的資料中,因為可以是負數,即能夠從右邊開始計數。
>>> word
`python`
>>> word[-1]
`n`
>>> word[-2]
`o`
但是,在模板中,無法使用負數的偏移量。
>>> "First={0[0]}, End={0[-1]}".format(word) #報錯
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers, not str
>>> "First={0[0]}, End={0[5]}".format(word) #把-1改為5就可以了。
`First=p, End=n`
當然,放到模板外面是完全可行的。這樣就好了:
>>> "First={0}, End={1}".format(word[0],word[-1])
`First=p, End=n`
dictionary的鍵
直接上實驗:
>>> myinfo
{`website`: `hiekay.github.io`, `name`: `hiekay`, `room`: 703}
>>> template = "I am {0[name]}"
>>> template.format(myinfo)
`I am hiekay`
>>> template = "I am {0[name]}. My QQ is {qq}"
>>> template.format(myinfo,qq="123456")
`I am hiekay. My QQ is 123456`
位置後面跟鍵,就能得到format的引數中字典的鍵對應的值。除了根據位置得到,還能夠根據關鍵詞得到:
>>> myinfo
{`website`: `hiekay.github.io`, `name`: `hiekay`, `room`: 703}
>>> "my website is {info[website]}, and I like {0}".format("python",info=myinfo) #關鍵詞info引用的是一個字典
`my website is hiekay.github.io, and I like python`
模板中新增屬性
實驗:
>>> import math
>>> "PI is {PI.pi}".format(PI=math)
`PI is 3.14159265359`
這是用關鍵詞,下面換個稍微複雜點,用位置的。
>>> import sys,math
>>> `PI is {0.pi}. My lptop runs {1.platform}`.format(math,sys)
`PI is 3.14159265359. My lptop runs linux2`
其它進位制
在這個世界上的數學領域,除了有我們常常用到的十進位制、十二進位制(幾點了,這是你我常用到的,鐘錶面就是12進位制)、六十進位制(這個你也熟悉的)外,還有別的進位制,比如二進位制、八進位制、十六進位制等等。進位制的確在計算機最底層是用二進位制的。
- 輸出時候的進位制問題。
>>> "{0:X}, {1:o}, {2:b}".format(255,255,255)
`FF, 377, 11111111`
- X:十六進位制,Hex
- o:八進位制,octal
- b:二進位制,binary
順便補充,對於數的格式化方法輸出和格式化表示式一樣,就不贅述了。
相關文章
- 格式化輸入輸出
- 格式化輸出
- 格式化輸入和輸出
- 格式化輸出 22
- python字串格式化輸出Python字串格式化
- 字串拼接格式化輸出字串
- 格式化輸出變數工具變數
- [20200306]expand格式化輸出.txt
- 練習3(格式化輸出)
- Python 字串格式化輸出方式Python字串格式化
- hadoop 自定義格式化輸出Hadoop
- [20191106]善用column格式化輸出.txt
- Go 語言中的格式化輸出Go
- 格式化輸出的幾種方式
- shell指令碼(3)-格式化輸出指令碼
- Java™ 教程(格式化數字列印輸出)Java
- Golang中的格式化時間輸出Golang
- 第四章 字串和格式化輸入/輸出字串
- GsonBuilder匯出null值、格式化輸出、日期時間UINull
- c語言中資料的格式化輸出C語言
- Python3:格式化輸出之format方法PythonORM
- .NET寶藏API之:OutputFormatter,格式化輸出物件APIORM物件
- while迴圈/格式化輸出/運算子/編碼While
- 如何用 Linux 命令列工具解析和格式化輸出 JSONLinux命令列JSON
- pythn print格式化輸出———“%s 和 % d” 都是什麼意思?
- 格式化輸出,while迴圈,運算子,初識編碼While
- 如何在langchain中對大模型的輸出進行格式化LangChain大模型
- 【譯】Java8官方教程:格式化輸出數值型別Java型別
- python裡的tplt什麼意思 Python的format格式化輸出PythonORM
- c++格式化輸出(百分數,小數,設定寬度)C++
- 『無為則無心』Python基礎 — 10、Python字串的格式化輸出Python字串
- [vue] 表單輸入格式化,中文輸入法異常Vue
- Java取當前時間的一分鐘後,並格式化輸出Java
- 輸入輸出
- Serilog文件翻譯系列(六) - 可用的接收器、增強器、格式化輸出
- 透過f-string編寫簡潔高效的Python格式化輸出程式碼Python
- 輸入輸出流
- 格式化釋出時間