1. 程式人生 > >Python的format方法用法

Python的format方法用法

轉自http://blog.csdn.net/xiaofeng_yan/article/details/6648493

在Python 3.0中,%操作符通過一個更強的格式化方法format()進行了增強。對str.format()的支援已經被反向移植到了Python 2.6


在2.6中,8-bit字串和Unicode字串都有一個format()方法,這個方法會把字串當作一個模版,通過傳入的引數進行格式化。這個用來格式化的模版使用大括號({,})作為特殊字元。

# Substitute positional argument 0 into the string.
"User ID: {0}".format("root") -> "User ID: root"

# Use the named keyword arguments
 'User ID: {uid} Last seen: {last_login}'.format(
  uid='root',
  last_login = '5 Mar 2008 07:20') ->
 'User ID: root Last seen: 5 Mar 2008 07:20'

大括號可以寫兩遍來轉義。

format("Empty dict: {{}}") -> "Empty dict: {}"

欄位名字可以為整數,表示引數的位置。像{0}, {1}等。也可以是引數的名字。你以可以使用欄位的組合來讀取屬性或者字典的key值。

import sys
'Platform: {0.platform}\nPython version: {0.version}'.format(sys) ->
 'Platform: darwin\n
 Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41) \n
 [GCC 4.0.1 (Apple Computer, Inc. build 5367)]'

import mimetypes
 'Content-type: {0[.mp4]}'.format(mimetypes.types_map) ->
 'Content-type: video/mp4'

注意,當使用字典型別的表示方法,如[.mp4]時,你不需要引號將字串(.mp4)引起來;它會查詢用.mp4作為主鍵的值。以整數開頭的字串會被轉換成一個整數。你不能在被格式化的字串中寫複雜的表示式。

到此,我們已經演示了怎樣替換指定的欄位。我們還可以通過在格式化指示符後面新增一個冒號來進行精確格式化。例如:

# Field 0: left justify, pad to 15 characters
# Field 1: right justify, pad to 6 characters
fmt = '{0:15} ${1:>6}'

fmt.format('Registration', 35) ->
 'Registration $ 35'

fmt.format('Tutorial', 50) ->
 'Tutorial $ 50'

fmt.format('Banquet', 125) ->
 'Banquet $ 125'

格式化指示符可以通過巢狀進行引用。

fmt = '{0:{1}}'


width = 15
fmt.format('Invoice #1234', width) ->
 'Invoice #1234 '
  
width = 35
fmt.format('Invoice #1234', width) ->
 'Invoice #1234 '

可以指定所需長度的字串的對齊方式。
效果字元:
< (預設)左對齊
> 右對齊
^ 中間對齊
= (只用於數字)在小數點後進行補齊

格式化指示符可以包含一個展示型別來控制格式。例如,浮點數可以被格式化為一般格式或用冪來表示。

>>> '{0:g}'.format(3.75)
 '3.75'
>>> '{0:e}'.format(3.75)
 '3.750000e+00'

展示型別有很多。2.6的文件裡有完整的列表。這裡列出一些示例。

'b' - 二進位制。將數字以2為基數進行輸出。
'c' - 字元。在列印之前將整數轉換成對應的Unicode字串。
'd' - 十進位制整數。將數字以10為基數進行輸出。
'o' - 八進位制。將數字以8為基數進行輸出。
'x' - 十六進位制。將數字以16為基數進行輸出,9以上的位數用小寫字母。
'e' - 冪符號。用科學計數法列印數字。用'e'表示冪。
'g' - 一般格式。將數值以fixed-point格式輸出。當數值特別大的時候,用冪形式列印。
'n' - 數字。當值為整數時和'd'相同,值為浮點數時和'g'相同。不同的是它會根據區域設定插入數字分隔符。
'%' - 百分數。將數值乘以100然後以fixed-point('f')格式列印,值後面會有一個百分號。

類和型別可以定義一個__format__()方法來控制怎樣格式化自己。它會接受一個格式化指示符作為引數:

def __format__(self, format_spec):
 if isinstance(format_spec, unicode):
  return unicode(str(self))
 else:
  return str(self)

還有一個內建的format()方法可以用來格式化一個值。它會呼叫型別的__format__()方法,並將格式化指示符作為引數傳進去。

>>> format(75.6564, '.2f')
 '75.66'

參考

格式化字串的語法 - 格式化欄位的參考文件
PEP 3101 - Advanced String Formatting
PEP由Talin編寫,由Eric Smith實現。

from http://www.onlypython.com/post/1926/

相關推薦

call()方法和apply()方法用法總結

content urn wan bar track student 理解 程序 數組 1. 每個函數都包含兩個非繼承而來的方法:call()方法和apply()方法。 2. 相同點:這兩個方法的作用是一樣的。 都是在特定的作用域中調用函數,等於設置函數體內this對象的

JS中的call()方法和apply()方法用法總結

con get global message 傳遞參數 接收 ESS tty 一般來說 原文引自:https://blog.csdn.net/ganyingxie123456/article/details/70855586 最近又遇到了JacvaScript中的cal

python zip方法用法

參考:https://blog.csdn.net/xlinsist/article/details/51346523 http://www.runoob.com/python/python-func-zip.html 1.zip() 函式用於將可迭代的物件作為引數,將物件中對應的元

jdk1.8中computeIfAbsent方法用法

computeIfAbsent(K key, Function《? super K, ? extends V> mappingFunction) computeIfAbsent的方法有兩個引數 第一個是所選map的key,第二個是需要做的操作。這個方法當key值不存在

js 中call() 方法和 apply() 方法用法總結

以前對js 的call() 和 apply() 方法的理解一直比較模糊,模稜兩可的狀態,今天閒著有空,在網上查找了相關資料做一下總結 1, 每個函式都包涵兩個非繼承而來的方法,call() 方法 和apply() 方法。 2,相同點兩個方法的作用都是一樣的。 都是在特定的作用域中呼叫

前端---js中的call和apply方法用法

最近看到JavaScript中關於call()和apply()方法可以用來呼叫函式的動態呼叫和實現偽繼承兩種功能,今天在這裡給大家詳細介紹一下. 1.call()函式 函式引用.call(呼叫者,引數1,引數2...) 等同於:呼叫者.函式(引數1,引數2...)=函

List常見方法用法總結

Collection 介面雖然是集合中最大的介面,但是如果直接使用Collection進行操作,表意並不明確,因此現在Collection介面現在已經不提倡使用,在這總結一下List子介面下的ArrayList類常見用法。 先在此羅列一些List介面中常見常用的

一起學爬蟲——urllib庫常用方法用法總結

1、讀取cookies import http.cookiejar as cj,urllib.request as request cookie = cj.CookieJar() handler = request.HTTPCookieProcessor(cookie) opener = request.

js filter()方法用法

js filter() es6 方法總結 1.建立一個數組,判斷陣列中是否存在某個值 var newarr = [ { num: 1, val: 'ceshi', flag: 'aa' }, { num: 2, val: 'ceshi2', flag:

hasOwnProperty方法用法簡介

hasOwnProperty表示是否有自己的屬性。這個方法會查詢一個物件是否有某個屬性,但是不會去查詢它的原型鏈。   ▍示例 var obj = { a: 1, fn: function(){ }, c:{ d: 5

js中陣列的sort()方法用法,引數以及排序原理

程式碼如下: function a(a,b){ if (a>b){ return 1; } } function b(){ var arr=[1,4,12,2,3,33

Android中的mediaplayer的seekto()方法用法

1、seekto方法的引數是毫秒,而不是秒,所以要注意引數傳遞 2、seekto方法是非同步方法,所以如果想要這樣寫: mediaPlayer.seekTo(10000); mediaPlayer.start(); 是沒有效果的 3、我個人測試seekto要寫在prep

jQuery中val()方法用法

此方法設定或獲取匹配元素的value屬性值。 只有具有value屬性的元素才能夠使用此方法。比如input元素可以使用此方法,而div元素就不可以。 使用方式: 用法一: 此方法不帶引數的時

C++中string型別insert方法用法集錦

C++方法的用法真的太多了,一個insert方法用法就多達8種,一不留神就用錯來了,很神傷。// inserting into a string #include <iostream> #i

Python的format方法用法

轉自http://blog.csdn.net/xiaofeng_yan/article/details/6648493 在Python 3.0中,%操作符通過一個更強的格式化方法format()進行了增強。對str.format()的支援已經被反向移植到了Python 2

getString()方法用法詳解

 String getString(int columnIndex)            以 Java 程式語言中 String 的形式獲取此 ResultSet 物件的當前行中指定列的值。 getString String getString(int columnIn

JavaScript中set與get方法用法

1、get與set是方法,因為是方法,所以可以進行判斷。 2、get是得到 一般是要返回的   set 是設定 不用返回 3、如果呼叫物件內部的屬性約定的命名方式是_age    然後就是幾個例子來

jquery append()方法與html()方法用法區別

append(content):方法在被選元素的結尾(仍然在內部)插入指定內容,有很多朋友覺得append與html差不多,其它從英文意義上append是在原有基礎上增加,而html中是替換當前所有內容。 定義和用法 append() 方法在被選元素的結尾(仍然在內部)插入指定內容。 $(selector)

python3 property呼叫私有方法用法

  1 class Test(object):   2     def __init__(self):   3         self.__num=100   4    5     def getNum (self):#呼叫私有方法   6         return

thinkphp create方法 用法 詳解

首先明白create方法的用處,是入庫前對資料的處理。 直接上create方法的例項: // 例項化User模型 $User = M('User'); // 根據表單提交的POST資料建立資料物件 $User->create(); // 把建立的資料物件寫入資料