標籤:pre 效率 排版 精度 需要 表示 三元 magedu ***
字串***
是由一個個字元組成的有序的序列,是字元的集合
使用單引號,雙向引號,三引號引住的字元序列 #三引號中可以放sql語句
字串是不可變對象
字串元素訪問
字串支援使用索引訪問
有序列的字元集合,字元序列
字串可以是個容器,可以被一個個迭代出來,因為它是有順序的
字串join串連*
"string".join(iterable) -> str
將可迭代對象串連起來,使用string作為分隔字元
可迭代對象本身元素都是字串
***返回一個新字串
#‘,‘.join() #join後接字串,‘‘中可以自訂間隔符
#‘,‘.join(map(str,range(10)))
字串+串連 #+ -> str
#將2個字串串連在一起
#字串相加產生新的字串傳回值為none
字串分割*
#分割字串的方法分為2類
#split系:將字串按照分隔字元分割成若干字串,並返回列表
#partition系:將字串按照分隔字元分割成2段,返回這2段和分隔字元的元組
split(sep=None, maxsplit=-1) -> list of strings #從左向右
#sep可以改分隔字元預設是空白字串作為分隔字元
# maxsplit 指定分割的次數,-1 表示遍曆整個字串
##傳回型別是什麼很重要 決定可不可以join
#rsplit() #從右向左切,用法一樣
splitlines([keepends]) -> list of strings
#按行切一行行切
#keepends 指的是是否保留行分隔字元
# 行分隔字元包括\n、\r\n、\r等
#常見分行符號:/r,/n ,/r/n
#空白分隔字元:空格,/t,/n
partition(sep) -> (head, sep, tail)
#可以split的一個特例只切一回,帶分隔字元,但切完返回的是元組
# 從左至右,遇到分隔字元就把字串分割成兩部分,返回頭、分隔字元、尾三部分的三元組;如果沒有找到分隔字元,就返回頭、2個空元素的三元組
#sep分隔字元字串必須指定,不可以用Null 字元
切字串比較常用:比如用在分行,檔案路徑路徑,電話區號等等.
字串大小寫
upper() #全大寫
lower() #全小寫
#大小寫,做判斷的時候用
swapcase() #互動大小寫
字串排版
title() -> str #標題的每個單詞都大寫
capitalize() -> str #首個單詞大寫
center(width[, fillchar]) -> str
#width 列印寬度
#fillchar 填充的字元
#格式:例:a.center(20,‘@‘)
zfill(width) -> str
#width 列印寬度,居右,左邊用0填充
ljust(width[, fillchar]) -> str 靠左對齊
rjust(width[, fillchar]) -> str 靠右對齊
#中文用的少,瞭解一下
字串修改***
(替換)replace(old, new[, count]) -> str #(替換)
#字串中找到匹配替換為新子串,返回新字串
#count表示替換幾次,不指定就是全部替換
(刪除) strip([chars]) -> str #(兩端去除)
#從字串兩端去除指定的字元集chars中的所有字元
#如果chars沒有指定,去除兩端的空白字元
lstrip([chars]) -> str #從左開始
rstrip([chars]) -> str #從右開始
字串尋找*** #返回索引號 #格式num.find(‘s‘,0,6)不指定數字從頭開始找
find(sub[, start[, end]]) -> int
#在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到返回-1
rfind(sub[, start[, end]]) -> int
#在指定的區間[start, end),從右至左,尋找子串sub。找到返回索引,沒找到返回-1
index(sub[, start[, end]]) -> int
#在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到拋出異常ValueError
rindex(sub[, start[, end]]) -> int
#在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到拋出異常ValueError
count(sub[, start[, end]]) -> int
#在指定的區間[start, end),從左至右,統計子串sub出現的次數
len(string) #返回字串的長度,即字元的個數
時間複雜度:index和count方法都是O(n),隨著列表資料規模的增大,而效率下降
字串判斷*** #傳回值為布爾型
#endswith(suffix[, start[, end]]) -> bool
#在指定的區間[start, end),字串是否是suffix結尾
#startswith(prefix[, start[, end]]) -> bool
#在指定的區間[start, end),字串是否是prefix開頭
字串判斷 is系列
isalnum() -> bool 是否是字母和數字組成
isalpha() 是否是字母
isdecimal() 是否只包含十進位數字
isdigit() 是否全部數字(0~9)
isidentifier() 是不是字母和底線開頭,其他都是字母、數字、底線
islower() 是否都是小寫
isupper() 是否全部大寫
isspace() 是否只包含空白字元
字串格式化(c風格比較雜亂需要記得比較多)
字串的格式化是一種拼接字串輸出樣式的手段,更靈活方便
#join拼接只能使用分隔字元,且要求被拼接的是可迭代對象
#+ 拼接字串還算方便,但是非字串需要先轉換為**字串**才能拼接
在2.5版本之前,只能使用printf style風格的print輸出
#printf-style formatting,來自於C語言的printf函數
格式要求
#預留位置:使用%和格式字元組成,例如%s、%d等
#s調用str(),r會調用repr()。所有對象都可以被這兩個轉換。
#預留位置中還可以插入修飾字元,例如%03d表示列印3個位置,不夠前面補零
#format % values,格式字串和被格式的值之間使用%分隔
#values只能是一個對象,或是一個和格式字串預留位置數目相等的元組,或一個字典
字串格式化***(運用format()函數格式化,python推薦版本)
*format函數格式字串文法——Python鼓勵使用*
#"{} {xxx}".format(*args, **kwargs) -> str
#args是位置參數,是一個元組
#kwargs是關鍵字參數,是一個字典
#花括弧表示預留位置
#{}表示按照順序匹配位置參數,{n}表示取位置參數索引為n的值
#{xxx}表示在關鍵字參數中搜尋名稱一致的
#{{}} 表示列印花括弧
#位置參數
"{}:{}".format(‘192.168.1.100‘,8888),這就是按照位置順序用位置參數替換前面的格式字串的預留位置中
#關鍵字參數或具名引數
"{server} {1}:{0}".format(8888, ‘192.168.1.100‘, server=‘Web Server Info : ‘) ,位置參數按照序號匹配,
#關鍵字參數按照名詞匹配
? #訪問元素
"{0[0]}.{0[1]}".format((‘magedu‘,‘com‘))
#對象屬性訪問
from collections import namedtuple
Point = namedtuple(‘Point‘,‘x y‘)
p = Point(4,5)
"{{{0.x},{0.y}}}".format(p)
#對齊
‘{0}*{1}={2:<2}‘.format(3,2,2*3) #冒號前面是索引號
‘{0}*{1}={2:<02}‘.format(3,2,2*3) #可以寫成{:0<3}.format(6),對齊空的位置補0,0可以換成其他字元也支援
‘{0}*{1}={2:>02}‘.format(3,2,2*3) #與上一個相反
‘{:^30}‘.format(‘centered‘) #代表中間對齊
‘{:*^30}‘.format(‘centered‘) #中間對齊0補空白位置
#進位
"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) #0是索引號,d十進位,x十六進位,o八進位,b二進位
"int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) #前面加成ox...
把下面的數轉換輸出:
octets = [192, 168, 0, 1]
‘{:02X}{:02X}{:02X}{:02X}‘.format(*octets) #*octets,是把上面的列表解開放到format裡轉換成16進位
#浮點數
print("{}".format(3**0.5)) # 1.7320508075688772
print("{:g}".format(3**0.5)) # 1.73205
print("{:f}".format(3**0.5)) # 1.732051
print("{:10f}".format(3**0.5)) # 靠右對齊#
print("{:2}".format(102.231)) # 寬度為2
print(“{:.2}”.format(3**0.5)) # 1.7 2個數字
print("{:.2f}".format(3**0.5)) # 1.73 小數點後2位
print("{:3.2f}".format(3**0.5)) # 1.73 寬度為3,小數點後2位
print("{:3.3f}".format(0.2745)) # 0.275 #%3 控制寬度
print("{:3.3%}".format(1/3)) # 33.333% #%.3 控制精度
python學習隨筆(三)_字串