Python字符串格式方式 %s format()


python中格式化字符串的方式有兩種,一種是使用"%s"的方式,一種是str.format()的方式,接下來就對這兩種方式做個介紹

1.%s的方式

兩種用法,第一種是在字符串中使用%s占位,在字符串后使用%替換值來替換,例如:

print("my name is %s and i am %d years old" %("xiaoming",18)
輸出結果:my  name is xiaoming and i am 18 years old
print("Hello,%s" % "Tom")
輸出結果:Hello,Tom

該方式的優點是簡單,缺點是影響可讀性的,在數量多了以后,很難清楚哪一個占位符對應哪一個實參,排序很麻煩

另一種方式可以用字典的形式進行表示:

print ("Hello,%(name)s" % {"name":"Tom"})
# 參數比較多的情況下這樣用
value = {"greet": "Hello world", "language": "Python"}  
print("%(greet)s from %(language)s." % value)
print("%(greet)s from %(language)s." % {"greet": "Hello world", "language": "Python"}  

常用字符格式有:

  • %% 百分號標記 #就是輸出一個%
  • %c 字符及其ASCII碼
  • %s 字符串
  • %d 有符號整數(十進制)
  • %u 無符號整數(十進制)
  • %o 無符號整數(八進制)
  • %x 無符號整數(十六進制)
  • %X 無符號整數(十六進制大寫字符)
  • %e 浮點數字(科學計數法)
  • %E 浮點數字(科學計數法,用E代替e)
  • %f 浮點數字(用小數點符號)
  • %g 浮點數字(根據值的大小采用%e或%f)
  • %G 浮點數字(類似於%g)
  • %p 指針(用十六進制打印值的內存地址)
  • %n 存儲輸出字符的數量放進參數列表的下一個變量中

2.format()方式

在python2.6開始,Python中新增加了一個字符串格式化字符的函數str.format(),此函數可以快速的處理各種字符串,增強了字符串格式化的功能。

基本語法是使用{}來替代%。format函數的實參位置可以不按照順序

1.使用位置參數

要點:位置參數不受順序約束,且可以為{},只要format里有相對應的參數值即可,參數索引從0開,傳入位置參數列表可用*列表

"{} {}".format("hello","world")#設置指定位置,按默認順序
輸出為:'hello world'
"{1} {0}".format("world","hello") # 設置指定位置 
輸出為:'hello world' 
"{1} {0} {1}".format("hello", "world") # 設置指定位置 
輸出為:'world hello world'
input=["hello", "world"] #傳入位置參數列表可用*列表
"{} {}".format(*input)
輸出為:'hello world'

2.使用關鍵字參數,類似於使用字典key值占位,將字典作為參數傳入字符串

要點:字符串中的關鍵字參數要與傳入的參數值對得上,可用字典當關鍵字參數傳入值,字典前加**即可

hash = {'name':'Bingo','age':18}
'my name is {name},age is {age}'.format(name='Bingo',age=18)
輸出:'my name is Bingo,age is 18'
'my name is {name},age is {age}'.format(**hash)#通過關鍵字,並用字典當關鍵字傳入值時,在字典前加**即可
輸出:'my name is Bingo,age is 18'

3、填充與格式化(:[填充字符][對齊方式 <^>][寬度])

^、<、>分別是居中、左對齊、右對齊,:號后面帶填充的字符,只能是一個字符,不指定的話默認是用空格填充對齊方式后面緊跟一個整數可以限定該字段的寬度。

'{0:*>10}'.format(9) ##右對齊
輸出:'*********9'
'{0:*<10}'.format(9) ##左對齊
輸出:'9*********'
'{0:*^10}'.format(9)##居中對齊
輸出:'****9*****'

4、精度與進制

'{0:.2f}'.format(1/3)
輸出:'0.33'
'{0:b}'.format(10)    #二進制
輸出:'1010'
'{0:o}'.format(10)     #八進制
輸出:'12'
'{0:x}'.format(10)     #16進制
輸出:'a'
'{:,}'.format(12369132698)  #千分位格式化
輸出:'12,369,132,698'

5、通過下標

my_list = ['xiaoming',18]
"name {0[0]}, age {0[1]}".format(my_list) #通過列表索引設置參數
'name xiaoming, age 18'

擴展:

如果字符串里面含有 "{"  或者  "}"時,需要把 "{" 和 "}" 字符以 "{{" 和 "}}" 代替。

例如:"{'name1':'{0}','name2':'{1}'}".format('qpy','wjx') 該字符串中包含額外的{},執行該命令后,會報錯,解決方法是將{}用{{}}代替,即

"{{'name1':'{0}','name2':'{1}'}}".format('qpy','wjx')

參考:https://www.cnblogs.com/qiujichu/p/10663197.html

https://www.cnblogs.com/Detector/p/8516464.html


免責聲明!

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



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