許多知識學了又忘,忘了又學,這次寫成博客,當做學習筆記了,時常複習。
概念
序列:由其它對象組成的有序集合。字符串可以看做是單字符的字符串組成的序列,按照從左到右的順序。
不可變對象:字符串一旦定義,則不會被改變,每次對字符串的更改操作實際是生成了新的字符串指向變量。
操作
s1 = 'abc' ;s2 = 'def'
s1+s2 = 'abcdef';s1*2 = 'abcabc'
創建
+,*
s = 'abc'
abc
單引號創建s = "abc"
abc
雙引號創建s = 'a"b"c'
a"b"c
中間插入引號s = """abc"""
abc
三引號創建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) |
格式化
-
%
控制格式化
跟C語言中的printf差不多,通過%控制輸出的長度,類型
下面通過幾個例子來了解一下:基於元組:
print('今天是 %d 年 %d 月 %d 日' %(2020,1,3)) >>>今天是 2020 年 1 月 3 日 tuple1 = (2020,1,3) print('今天是 %d 年 %d 月 %d 日' %tuple1) >>>今天是 2020 年 1 月 3 日
基於字典:
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) >>> 今天是2020 年 1 月 3 日 今天是2020 年 1 月 3 日
格式控制:
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 % 轉義%,編碼爲%% -
.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
-
f
函數a=1 b=4 print(f'a={a},b={b}') >>>a=1,b=4