Python第三週Round2-字符串格式化

字符串格式化實際上是一個輔助的東西,趙女士今年考研不錯,能夠到時候用字符串的一些sao操做發個朋友圈裝逼。python

其實格式化就是對字符串進行各類各樣的變化,來達到裝逼的效果,例如word中的文字變化,用python語言來實現。spa

1、基本知識

格式化方法code

  • 百分號方式:
  • format方式:

百分號的方式相對來講比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前二者並存。orm

1.百分號方式:

%[(name)][flags][width].[precision]typecode

  

(name)      可選,用於選擇指定的key對象

flags          可選,可供選擇的值有:blog

  • +  右對齊;正數前加正好,負數前加負號;
  • -        左對齊;正數前無符號,負數前加負號;
  • 空格    右對齊;正數前加空格,負數前加負號;
  • 0        右對齊;正數前無符號,負數前加負號;用0填充空白處

width         可選,佔有寬度ci

.precision   可選,小數點後保留的位數unicode

typecode    必選字符串

  • s,獲取傳入對象的__str__方法的返回值,並將其格式化到指定位置
  • r,獲取傳入對象的__repr__方法的返回值,並將其格式化到指定位置
  • c,整數:將數字轉換成其unicode對應的值,10進制範圍爲 0 <= i <= 1114111(py27則只支持0-255);字符:將字符添加到指定位置
  • o,將整數轉換成 八  進製表示,並將其格式化到指定位置
  • x,將整數轉換成十六進制表示,並將其格式化到指定位置
  • d,將整數、浮點數轉換成 十 進製表示,並將其格式化到指定位置
  • e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e)
  • E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E)
  • f, 將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位)
  • F,同上
  • g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(若是是科學計數則是e;)
  • G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(若是是科學計數則是E;)
  • %,當字符串中存在格式化標誌時,須要用 %%表示一個百分號

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

 

s = "我是 %s" % "小果果"

s = "我是 %s,今年 %d " % ("小果果", 2)

s = "我是 %(name)s ,今年 %(age)d 歲" % {"name": "小果果", "age": 2} #此格式要求十分嚴格,必須是字典格式,勿眼高手低

s = "百分之 %.2f" % 99.97623

s = " %(pp).2f" % {"pp": 123.425556, }

s = " %(pp).2f %%" % {"pp": 123.425556, }

print(s)

  

2.format方式

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

  

fill           【可選】空白處填充的字符

align        【可選】對齊方式(需配合width使用)

    • <,內容左對齊
    • >,內容右對齊(默認)
    • =,內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。 即便:符號+填充物+數字
    • ^,內容居中

sign         【可選】有無符號數字

    • +,正號加正,負號加負;
    •  -,正號不變,負號加負;
    • 空格 ,正號空格,負號加負;

            【可選】爲數字添加分隔符,如:1,000,000

#            【可選】對於二進制、八進制、十六進制,若是加上#,會顯示 0b/0o/0x,不然不顯示

width       【可選】格式化位所佔寬度

.precision 【可選】小數位保留精度

type         【可選】格式化類型

  傳入」 字符串類型 「的參數

    • s,格式化字符串類型數據
    • 空白,未指定類型,則默認是None,同s

  傳入「 整數類型 」的參數

    • b,將10進制整數自動轉換成2進製表示而後格式化
    • c,將10進制整數自動轉換爲其對應的unicode字符
    • d,十進制整數
    • o,將10進制整數自動轉換成8進製表示而後格式化;
    • x,將10進制整數自動轉換成16進製表示而後格式化(小寫x)
    • X,將10進制整數自動轉換成16進製表示而後格式化(大寫X)

  傳入「 浮點型或小數類型 」的參數

    • e, 轉換爲科學計數法(小寫e)表示,而後格式化;
    • E, 轉換爲科學計數法(大寫E)表示,而後格式化;
    • f , 轉換爲浮點型(默認小數點後保留6位)表示,而後格式化;
    • F, 轉換爲浮點型(默認小數點後保留6位)表示,而後格式化;
    • g, 自動在e和f中切換
    • G, 自動在E和F中切換
    • %,顯示百分比(默認顯示小數點後6位)

  

s = "我叫 {}, 今年 {}, {}".format ("小果果", 2, '沒有起牀氣')
s = "我叫 {}, 今年 {}, {}".format (*["小果果", 2, '沒有起牀氣'])

s = "我叫 {0}, 今年 {1}, 特色 {2}".format ("小果果", 2, '沒有起牀氣的')
s = "我叫 {0}, 今年 {1}, 特色 {2}".format (*["小果果", 2, '沒有起牀氣的'])

s = "我叫 {名字}, 今年 {年齡}歲,  {特色}".format (名字="小果果", 年齡=2, 特色='沒有起牀氣的')
s = "我叫 {名字}, 今年 {年齡}歲, {特色}".format (**{'名字': '小果果', "年齡": 2, '特色': '沒有起牀氣的'})

s = "我叫 {0[0]}, 今年 {1[1]}, 特色 {0[2]}".format (['小果果', '2歲', '棕色的'], ['捲毛的', 'hhh', '泰迪'])

s = "我叫 {:s}, 今年 {:d}歲, {:f}".format ("小果果", 2, 88888.1)

s = "我叫 {名字:s}, 今年 {今年:d}歲".format (名字="小果果", 今年=2)
s = "我叫 {名字:s}, 今年 {今年:d}歲".format (**{"名字": "小果果", "今年": 2})

s = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format (15, 15, 15, 15, 15, 15.87623, 2)
s = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format (15)
s = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format (num=15)
print (s)

  

這種format的方法略顯笨重,必須和變量的定義在一行,若是用s.format(),沒法定義。

有一點比較好的地方,{這裏能夠直接寫漢字},format()的參數很奇妙,有些規律,可是目前我尚未所有研究透,列表前加*,字典前加**

 

2、一些騷操做

此處留空,給本身留個題目,用python畫個三角形

相關文章
相關標籤/搜索