1.字符串詳解-python3基礎知識

許多知識學了又忘,忘了又學,這次寫成博客,當做學習筆記了,時常複習。

概念

序列:由其它對象組成的有序集合。字符串可以看做是單字符的字符串組成的序列,按照從左到右的順序。
不可變對象:字符串一旦定義,則不會被改變,每次對字符串的更改操作實際是生成了新的字符串指向變量。

操作

s1 = 'abc' ;s2 = 'def'
s1+s2 = 'abcdef';s1*2 = 'abcabc'

創建

+,*

  1. s = 'abc' abc單引號創建
  2. s = "abc" abc雙引號創建
  3. s = 'a"b"c' a"b"c中間插入引號
  4. s = """abc""" abc三引號創建
  5. s = 'abc''def' abcdef不加,自動拼接
    s = 'abc','def' ('abc', 'def')加了,變元組
    6.s = str() 強制類型轉換

轉義字符

轉義字符的長度認爲是一個字符。即len('\na') = 2

轉義字符 意義
\(在末尾時) 續行符
\ 反斜槓\
\’ 單引號
" 雙引號
\n 換行
\b 退格
\a 響鈴,得在命令行纔會響
\t 橫向製表符
\v 縱向製表符
\r 回車
\f 換頁
\0或者\000
\0yy 八進制
\xyy 十六進制

字符串前加u,b,r

s = u'xxx' 加u表示unicode編碼
s = b'xxx' 加b表示ASCII碼
s = r'xxx' 加r防止轉義

方法

迭代

s = 'abc'
for i in s:
	print(i,end=' ')
>>>a b c

s = 'abcde'
print('abc'in s)
print('aac'in s)
>>> True False#in的結果返回布爾值

索引,切片

切片
s[start : end : step]
start缺省值爲0,即從頭開始
end缺省值爲len(s)即到結尾
step缺省值爲 1

s = 'abc123'
print(s[1],s[-3],s[-6])
>>>b 1 a#索引可以正序倒序

s = 'abc123'
print(s[:],s[3:],s[:3],s[:-1],s[::2])
>>>abc123 123 abc abc12 ac2

.mothod

方法 作用 備註
s.capitalize() 實現首字母大寫,其餘變成小寫 made IN CHina >>> Made in china
s.casefold() 轉化爲小寫,對德語等也有效
s.center() 字符串居中 s.center(width[, fillchar])fillchar缺省值爲空格
s.count() 統計 s.count(substr[,start, end]);start>end會返回0,不會拋出異常s.count('')=len(s)+1;start,end可以爲負數。
s.encode() 以指定方式編碼,返回bytes類型 s.encode([encoding][,errors])encoding默認爲utf-8
s.decode() 以指定方式解碼 同上
s.endswith() 是否以指定字符串結尾 s.endwith(substr[,start,end])返回True或False,越界與count相同
s.expandtabs() 將tab轉爲空格字符 s.expandtabs(tabsize=8)默認是8個空格,從字符開始數,夠8個補齊空格
s.find() 查找 s.find(str[,start,end]) 返回查找子字符串的第一個位置,找不到返回-1
s.format() 格式化 在下面字符串格式化詳細解釋
s.index() 索引 s.index(str[,start,end])返回查找到子字符串的第一個索引,沒有則拋出異常
is系列方法 執行判斷 返回True or False
s.isalnum() 字母和數字
s.isalpha() 字母
s.isdecimal() 是否僅含十進制字符(只存在unicode編碼下) True: Unicode數字,,全角數字(雙字節)False: 羅馬數字,漢字數字Error: byte數字(單字節)
s.isdigit() 是否只由數字構成 True: Unicode數字,byte數字(單字節),全角數字(雙字節),羅馬數字False: 漢字數字Error: 無
s.isnumeric() 只要是數字就能識別 True: Unicode數字,全角數字(雙字節),羅馬數字,漢字數字False: 無Error: byte數字(單字節)
s.isidentifier() 是否爲標識符
s.islower() 字母是否全爲小寫
s.isprintable() 是否爲可打印字符 含有製表符換行符之類的功能字符就返回False
s.isspace() 是否爲空字符 空格,換行,回車,縮進,都是True
s.istitle() 是否爲標題 首字母大寫,其餘字母小寫,以特殊字符爲分割
s.issupper() 字母是否都爲大寫
s.join() 以字符爲間隔符組合 str.join(object)object是可迭代對象,元組,字典,列表,字符串 函數返回字符串
s.ljust() 左對齊,默認空格填充 s.ljust(lens[,str]),長度小於原字符串則返回原字符串
s.lower() 轉換爲小寫 只針對英語字符
s.lstrip() 從左去除指定字符,默認爲空格 s.lstrip([char])會從左去除子字符串char中所有元素,直到不是
s.maketrans() 返回一個字符串映射表(dic) s.maketrans(intab,outtab[,deltab]),datatbl會映射到None.參數也可以用字典
s.translate() 一般與maketrans一起使用,返回修改後的字符串
s.partition() 以指定字符串分割,返回三組 s.partition(str),如果在開頭則第一個元素爲空字符
s.replace() 替換字符串 s.replace(ord,new[,times])time默認是全部替換
s.rfind() 從右開始,同find
s.rindex() 從右開始索引,同index
s.rjust() 右對齊,默認空格填充
s.rapartition() 從右分割,其他同partition
s.rsplit() 從右開始分割同split
s.rstrip() 從右去除指定字符串
s.split() 以指定字符串分割字符 s.split(str[,times]) 次數默認是-1,分割所有,值得注意的是,如果分隔符在開頭或者末尾,會分割出一個空字符串;返回的對象是一個列表
s.splitlines() 以換行\n,\r,\r\n作爲分隔符分割 s.splitlines([keepends])keepends默認爲False,不保留換行符
s.startswith() 判斷是否以子字符串開頭 返回True或False
s.strip() 跟lstrip一樣,從兩邊去除
s.swapcase() 大小寫進行轉換
s.title() 每個單詞首字母大寫
s.upper() 每個字母變成大寫
s.zfill() 用0填充到指定長度 s.zfill(width) 等同於s.rjust('0',width)

格式化

  1. %控制格式化
    跟C語言中的printf差不多,通過%控制輸出的長度,類型
    下面通過幾個例子來了解一下:

    基於元組:

    print('今天是  %d 年 %d 月 %d 日' %(2020,1,3))
    >>>今天是  202013 日
    
    tuple1 = (2020,1,3)
    print('今天是  %d 年 %d 月 %d 日' %tuple1)
    >>>今天是  202013

    基於字典:

    dic1=dict(year=2020,month=1,day=3)
    print('今天是%(year)d 年 %(month)d 月 %(day)d 日'%{'year': 2020, 'month': 1, 'day': 3})
    print('今天是%(year)d 年 %(month)d 月 %(day)d 日'%dic1)
    >>>
    今天是202013 日
    今天是202013

    格式控制:

    print('控制長度爲5:"%5d"'%123)
    >>>控制長度爲5:"  123"
    
    print("控制長度爲5,用0填充:%05d"%123)
    >>>控制長度爲5,0填充:00123
    
    #左對齊,右邊補了空格	
    print("控制長度爲5,左對齊:%-5dEND"%123)
    >>>控制長度爲5,左對齊,0填充:123  END 
    
    #這裏小數點前的整數代表的是整個長度,而不是整數部分的長度
    print("控制小數位:%08.4f"%1.2)
    >>>控制小數位:001.2000
    
    
    符號 意義
    s 字符串格式
    c 字符,int會被轉化爲ASCII碼
    d 十進制整數,可以把二進制八進制十六進制自動轉換
    i 跟d一樣,沒找到區別,大佬們指點一下
    u 已經廢棄了,現在作用跟d相同
    o 八進制整數
    x 十六進制整數
    X 十六進制整數,字母是大寫
    e 帶有指數的浮點數
    E 同e,字母大寫
    f 十進制浮點數
    F 同f,字母大寫
    g 同e,f
    G 同E,F
    % 轉義%,編碼爲%%
  2. .format方法格式化
    利用花括號{}來指定替換目標及要插入的參數
    無序:

    print('Today is {}--{}--{}'.format(2020,1,3))
    >>>Today is 2020--1--3
    

    有序:

    print('Today is {0}--{1}--{2}'.format(2020,1,3))
    >>>Today is 2020--1--3
    print('Today is {1}--{0}--{2}'.format(1,2020,3))
    >>>Today is 2020--1--3
    

    通過字典:

    print('Today is {years}--{months}--{days}'.format(years=2020,months=1,days=3))
    >>>Today is 2020--1--3
    

    通過列表:

    list1 = [2020,1,8]
    print('Today is {0[0]}--{0[1]}--{0[2]}'.format(list1))
    >>>Today is 2020--1--8
    

    控制格式:大體上與%相似,這裏用後的語句來控制

    print('π的值是{:08.4f}'.format(3.14159286))
    >>>π的值是003.1416
    
  3. f函數

    a=1
    b=4
    print(f'a={a},b={b}')
    >>>a=1,b=4
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章