1. 程式人生 > >python基礎(字串方法[format])

python基礎(字串方法[format])

字串

操作:
1.String.center(self, width, fillchar=None) :返回以長度寬度為width,字串在中心的字串。填充使用指定的填充字元完成(預設為空格) ,如果width小於字串的長度,則不截位,列印完整的字串。
Eg:
String = “商品列表”
Print(String.center(19,”-”))
註解:”商品列表”佔4位,使用center函式補充到19位,”商品列表”在中心,左右兩邊用”-”補充,因為19是單數,字串“商品列表”為雙數佔4位,剩餘15位,左邊8位,右邊7位
2.string.strip移除字串頭尾指定的字元(預設為空格)或字元序列,也可以刪除/n, /r, /t, ’ ‘,指定一個或者多個字元
3.string. replace(self, old, new, count=None) 將原有字元替換成新字元
默認個數是全部替換,count的含義是替換幾次,從左邊開始
4. s.split(self, sep=None, maxsplit=-1)
sep:擷取的物件 maxsplit:最多進行擷取的次數
通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串,唯一返回值是一個列表(如果裁剪的物件不存在字串中,則只把字串轉換成列表)
5.string.find(obj)找到obj對應的索引值,若不存在,返回-1
6.string.index(obj,start,end)返回第一個相同字元的索引,如果字元不存在則報錯:ValueError: substring not found
補充:
1.
a = “abc\r123”
print(a)
實行結果:123
\r:將游標重新換到一開始,繼續列印
2.
字串格式化符號 %f 可指定小數點後的精度。
a = 19.129465
print("%.2f"%a)
實行結果:19.13
3.
%g 是自動選擇輸出格式的,在六位數的情況下就會以科學計數法方式輸出,用於列印資料時,會去掉多餘的零,至多保留六位有效數字。
4.
使用格式化符號進行進位制轉換
num = 10
print(‘十六進位制:%#x’ % num) #使用%x將十進位制num格式化為十六進位制
print(‘二進位制:’, bin(num)) #使用bin將十進位制num格式化為二進位制
print(‘八進位制:%#o’ % num) #使用%o將十進位制num格式化為八進位制
實行結果:
十六進位制:0xa
二進位制: 0b1010
八進位制:0o12
上面使用格式化符號進行進位制轉換中,多加入了一個#號,目的是在轉換結果頭部顯示當前進位制型別,如不需要,可將#號去除
5. 字串的分割還有partition()這種方式

partition(sep) --> (head,sep,tail)
從左向右遇到分隔符把字串分割成兩部分,返回頭、分割符、尾三部分的三元組。如果沒有找到分割符,就返回頭、尾兩個空元素的三元組。
Eg:
s1 = “I’m a good sutdent.”
#以’good’為分割符,返回頭、分割符、尾三部分。
s2 = s1.partition(‘good’)
#沒有找到分割符’abc’,返回頭、尾兩個空元素的元組。
s3 = s1.partition(‘abc’)
print(s1)
print(s2)
print(s3)
實行結果:
I’m a good sutdent.
("I’m a ", ‘good’, ’ sutdent.’)
(“I’m a good sutdent.”, ‘’, ‘’)
6. 針對 Counter 的升級使用
#必須引用如下庫
from collections import Counter
Counter (string):以字典的形式,輸出每個字串中出現的字元及其數量
7.通過切片來實現字串的反轉
String = string[::-1]
8.a = [1,2,3,4,5,6,7,8,9,10]
Str1 = “”.join(a)
實行結果:報錯
atr = “”.join(a)
TypeError: sequence item 0: expected str instance, int found
原因:使用join函式時候,join的引數的元素必須是字串
補充:
1我又來提問了——isdigit和isnumeric的區別
isdigit判斷只包含數字,isnumeric判斷只包含數字字元
isdigit()
True: Unicode數字,byte數字(單位元組),全形數字(雙位元組),羅馬數字
False: 漢字數字
Error: 無

isdecimal()
True: Unicode數字,,全形數字(雙位元組)
False: 羅馬數字,漢字數字
Error: byte數字(單位元組)

isnumeric()
True: Unicode數字,全形數字(雙位元組),羅馬數字,漢字數字
False: 無
Error: byte數字(單位元組)

2 ‘zip’函式
函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]

zip(a,c) # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]

zip(*zipped) # 與 zip 相反,*zipped 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]

  1. zfill(), 它會在數字的左邊填充 0.
    ‘12’.zfill(5)
    ‘00012’

3.字串的format運用
字串型別格式化採用format()方法,基本使用格式是:
<模板字串>.format(<逗號分隔的引數>)
呼叫format()方法後會返回一個新的字串,引數從0 開始編號。

  1. “{}:計算機{}的CPU 佔用率為{}%。”.format(“2016-12-31”,“PYTHON”,10)
  2. Out[10]: ‘2016-12-31:計算機PYTHON的CPU 佔用率為10%。’
    format()方法可以非常方便地連線不同型別的變數或內容,如果需要輸出大括號,採用{{表示{,}}表示},例如:
  3. “{}{}{}”.format(“圓周率是”,3.1415926,"…")
  4. Out[11]: ‘圓周率是3.1415926…’
  5. “圓周率{{{1}{2}}}是{0}”.format(“無理數”,3.1415926,"…")
  6. Out[12]: ‘圓周率{3.1415926…}是無理數’
  7. s=“圓周率{{{1}{2}}}是{0}” #大括號本身是字串的一部分
  8. s
  9. Out[14]: ‘圓周率{{{1}{2}}}是{0}’
  10. s.format(“無理數”,3.1415926,"…") #當呼叫format()時解析大括號
  11. Out[15]: ‘圓周率{3.1415926…}是無理數’
  12. 格式控制資訊
    format()方法中<模板字串>的槽除了包括引數序號,還可以包括格式控制資訊。此時,槽的內部樣式如下:
    {<引數序號>: <格式控制標記>}
    其中,<格式控制標記>用來控制引數顯示時的格式,包括:<填充><對齊><寬度>,<.精度><型別>6 個欄位,這些欄位都是可選的,可以組合使用,逐一介紹如下。
    <寬度>
    指當前槽的設定輸出字元寬度,如果該槽對應的format()引數長度比<寬度>設定值大,則使用引數實際長度。如果該值的實際位數小於指定寬度,則位數將被預設以空格字元補充。
    <對齊>
    指引數在<寬度>內輸出時的對齊方式,分別使用<、>和^三個符號表示左對齊、右對齊和居中對齊。
    <填充>
    指<寬度>內除了引數外
    的字符采用什麼方式表示,預設採用空格,可以通過<填充>更換。
  13. s = “PYTHON”
  14. “{0:30}”.format(s)
  15. Out[17]: 'PYTHON ’
  16. “{0:>30}”.format(s)
  17. Out[18]: ’ PYTHON’
  18. “{0:*^30}”.format(s)
  19. Out[19]: ‘PYTHON
  20. “{0:-^30}”.format(s)
  21. Out[20]: ‘------------PYTHON------------’
  22. “{0:3}”.format(s)
  23. Out[21]: ‘PYTHON’
    逗號(,)
    <格式控制標記>中逗號(,)用於顯示數字的千位分隔符,例如:
  24. “{0:-^20,}”.format(1234567890)
  25. Out[24]: ‘—1,234,567,890----’
  26. “{0:-^20}”.format(1234567890) #對比輸出
  27. Out[25]: ‘-----1234567890-----’
  28. “{0:-^20,}”.format(12345.67890)
  29. Out[26]: ‘----12,345.6789-----’
    <.精度>
    表示兩個含義,由小數點(.)開頭。對於浮點數,精度表示小數部分輸出的有效位數。對於字串,精度表示輸出的最大長度。
  30. “{0:.2f}”.format(12345.67890)
  31. Out[29]: ‘12345.68’
  32. “{0:H^20.3f}”.format(12345.67890)
  33. Out[30]: ‘HHHHH12345.679HHHHHH’
  34. “{0:.4}”.format(“PYTHON”)
  35. Out[31]: ‘PYTH’
    <型別>
    表示輸出整數和浮點數型別的格式規則。對於整數型別,輸出格式包括6 種:
    • b: 輸出整數的二進位制方式;
    • c: 輸出整數對應的 Unicode 字元;
    • d: 輸出整數的十進位制方式;
    • o: 輸出整數的八進位制方式;
    • x: 輸出整數的小寫十六進位制方式;
    • X: 輸出整數的大寫十六進位制方式;
  36. “{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}”.format(425)
  37. Out[32]: ‘110101001,Ʃ,425,651,1a9,1A9’
    對於浮點數型別,輸出格式包括4 種:
    • e: 輸出浮點數對應的小寫字母 e 的指數形式;
    • E: 輸出浮點數對應的大寫字母 E 的指數形式;
    • f: 輸出浮點數的標準浮點形式;
    • %: 輸出浮點數的百分形式。
    浮點數輸出時儘量使用<.精度>表示小數部分的寬度,有助於更好控制輸出格式。
  38. “{0:e},{0:E},{0:f},{0:%}”.format(3.14)
  39. Out[33]: ‘3.140000e+00,3.140000E+00,3.140000,314.000000%’
  40. “{0:.2e},{0:.2E},{0:.2f},{0:.2%}”.format(3.14)
  41. Out[34]: ‘3.14e+00,3.14E+00,3.14,314.00%’
  42. ‘!a’ (使用 ascii()), ‘!s’ (使用 str()) 和 ‘!r’ (使用 repr()) 可以用於在格式化某個值之前對其進行轉化:
  43. import math

  44. print(‘常量 PI 的值近似為: {}。’.format(math.pi))

  45. 常量 PI 的值近似為: 3.141592653589793。
  46. print(‘常量 PI 的值近似為: {!r}。’.format(math.pi))

  47. 常量 PI 的值近似為: 3.141592653589793。
    print(’{0:20}’.format(2))
    print(’{0:20}’.format(“2”)
    實行結果:
    2
    2
    print("{:.0%}".format(0.12))
    實行結果: 12%
  48. exit()的用法
    1.sys.exit(n) 退出程式引發SystemExit異常,可以捕獲異常執行些清理工作。n預設值為0,表示正常退出,其他都是非正常退出。還可以sys.exit(“sorry, goodbye!”); 一般主程式中使用此退出。

2.os._exit(n), 直接退出, 不拋異常, 不執行相關清理工作。常用在子程序的退出。

3.exit()/quit(),跑出SystemExit異常。一般在互動式shell中退出時使用。

4.exit(0) 有什麼功能?
在很多型別的作業系統裡,exit(0) 可以中斷某個程式,而其中的數字引數則用來表示程式是否是碰到錯誤而中斷。exit(1) 表示發生了錯誤,而 exit(0) 則表示程式是正常退出的。這和我們學的布林邏輯 0==False 正好相反,不過你可以用不一樣的數字表示不同的錯誤結果。比如你可以用exit(100) 來表示另一種和 exit(2)或 exit(1) 不同的錯誤。
5. 儘量使用join()連結字串,因為’+’號連線n個字串需要申請n-1次記憶體,使用join()需要申請1次記憶體。
6. 固定長度分割字串
import re
s = ‘1234567890’
a = re.findall(r’.{1,3}’,s)
print(a)
實行結果:
[‘123’, ‘456’, ‘789’, ‘0’]
語法解釋:’.’任意字元
‘1,3’匹配前一個字元,1-3次
Re.findall 按照模式進行尋找,找到的情況下返回列表型別

maketrans() 和 translate()
maketrans()
功能:製作用於字串替換的對映表
格式: 字串.maketrans(‘查詢字元’,‘替換字元’) 兩個字元必須長度相等
返回值:字典

translate
功能:進行字串替換操作
格式:字串.translate(對映表)
返回值:替換之後的字串