python--字符串格式化


python的字符串格式化有兩種方式:百分號方式、format方式。百分號方式相對來說比較老,而format方式則是比較先進的方式。

1)百分號格式

語法:
  %[(name)][flags][width].[precision]typecode

  name:--可選,用於選擇指定的key
  flags: --可選,可供選擇的值有:
    +:--右對齊,正數前加正號,負數前加負號
    -:--左對齊,正數前無符號,負數前加負號
  空格:--右對齊,正數前加空格,負數前加負號
    0:--右對齊,正數前無符號,負數前加負號,用0填充空白處
  width:--可選,占有寬度
  precision:--可選,小數點后保留的位數
  typecode:--必選,可供選擇的值有:
    %s 字符串 (采用str()的顯示)
    %r 字符串 (采用repr()的顯示)
    %c 單個字符
    %b 二進制整數
    %d 十進制整數
    %i 十進制整數
    %o 八進制整數
    %x 十六進制整數
    %e 指數 (基底寫為e)
    %E 指數 (基底寫為E)
    %f 浮點數
    %F 浮點數,與上相同
    %g 指數(e)或浮點數 (根據顯示長度)
    %G 指數(E)或浮點數 (根據顯示長度)
    %% 表示一個字符"%"

注意:python中百分號格式化是不存在自動將整數轉換成二制表示的方式

常用格式化示例:

 1 str1 = "I am learning %s" % "python"
 2 
 3 str2 = "my name is %s , age %d" %("yusheng_liang", 20)  4 
 5 str3 = "my name is %(name)s , age %(age)d" %{"name": "yusheng_liang", "age": 20}  6 
 7 str4 = "precent %.2f" % 99.97654
 8 
 9 str5 = "I am %(qq).2f" %{"qq": 123.45678} 10 
11 str6 = "I am %(qq).2f %%" %{"qq": 123.45678} 12 
13 
14 print("str1:", str1) 15 print("str2:", str2) 16 print("str3:", str3) 17 print("str4:", str4) 18 print("str5:", str5) 19 print("str6:", str6)
View Code

示例結果:

 

 

2)format方式

語法:
  [[fill]align][sign][#][0][width][,][.precision][type]

  fill:--可選,空白處填充的字符
  align:--可選,對齊方式(需配合width使用)
    <內容左對齊
    >:內容右對齊(默認)
    =:內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。即:符號+填充物+數字
    ^:內容居中
  sign:--可選,有無符號數字
    +:正號加正,負號加負
    -:正號不變,負號加負
  空格:正號空格,負號加負
  #:--可選,對於二進制、八進制、十六進制,如果加上#,會顯示0b/0o/0x,否則不顯示
  ,:--可選,為數字洄分隔符,如:1,000,000
  width:--可選,格式化位所占寬度
  .precision:--可選,小數位保留精度
  type:--可選,格式化類型
  對於整數類型,輸出格式包括6 種:
    b: 輸出整數的二進制方式;
    c: 輸出整數對應的 Unicode 字符;
    d: 輸出整數的十進制方式;
    o: 輸出整數的八進制方式;
    x: 輸出整數的小寫十六進制方式;
    X: 輸出整數的大寫十六進制方式;

  對於浮點數類型,輸出格式包括4 種:
    e: 輸出浮點數對應的小寫字母 e 的指數形式;
    E: 輸出浮點數對應的大寫字母 E 的指數形式;

    f: 輸出浮點數的標准浮點形式;

    %: 輸出浮點數的百分形式。

常用格式化示例:

 1 str1 = "I am {}, age {}".format("yusheng_liang", 20)  2 str2 = "I am {}, age {}".format(*["yusheng_liang", 20])  3 str3 = "I am {0}, age {1}".format("yusheng_liang", 20)  4 str4 = "I am {name}, age {age}".format(name = "yusheng_liang", age = 20)  5 str5 = "I am {name}, age {age}".format(**{"name": "yusheng_liang", "age": 20})  #以字典的方式提供數據
 6 str6 = "I am {0[0]}, age {0[1]}, set {1[2]}".format([1, 2, 3], [11, 22, 33])  7 str7 = "I am {:s}, age {:d}, money {:f}".format("yusheng_liang", 20, 5000.23)  8 str8 = "I am {:s}, age {:d}".format("yusheng_liang", 20)  9 str9 = "I am {name:s}, age {age:d}".format(name = "yusheng_liang", age = 20) 10 str10 = "I am {name:s}, age {age:d}".format(**{"name": "yusheng_liang", "age": 20}) 11 str11 = "number: {:b}, {:o}, {:d}, {:x}, {:X}, {:%}".format(15, 15, 15, 15, 15, 15, 15.456, 2) 12 
13 
14 print("str1:", str1) 15 print("str2:", str2) 16 print("str3:", str3) 17 print("str4:", str4) 18 print("str5:", str5) 19 print("str6:", str6) 20 print("str7:", str7) 21 print("str8:", str8) 22 print("str9:", str9) 23 print("str10:", str10) 24 print("str11:", str11)
View Code

示例結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM