Python字串操作、函式整理

浪裡小白羊發表於2017-12-11

字串操作整理

字串操作

  • + 字串連線操作
  • * 字串複製操作
  • [] 字串索引操作,通過索引訪問指定位置的字元,索引從0開始
  • [::] 字串取片操作
  • 完整格式:[開始索引:結束索引:間隔值]
  • [:結束索引] 從開頭擷取到結束索引之前
  • [開始索引:] 從開始索引擷取到字串的最後
  • [開始索引:結束索引] 從開始索引擷取到結束索引之前
  • [:] 擷取所有字串
  • [開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取字元
  • r'字串' 元字串,所有字串中的轉義字元不會轉義,當作普通字元
var1 = '012345678'
var2 = 'abcdefghi'
#字串連線操作
print(var1)
print(var1 + var2)
複製程式碼
012345678
012345678abcdefghi
複製程式碼
#字串複製操作
print(var1)
print(var1 * 3)
複製程式碼
012345678
012345678012345678012345678
複製程式碼
#索引操作
print(var1)
print(var1[0])
print(var1[-1])
複製程式碼
012345678
0
8
複製程式碼
# [::] 字串取片操作
print(var1)
print(var1[0:3])#輸出0,1,2位置的字元,包含前面不包含後面
複製程式碼
012345678
012
複製程式碼
# 完整格式:[開始索引:結束索引:間隔值]
print(var1)
print(var1[0:6:2])
print(var1[0::2])
複製程式碼
012345678
024
02468
複製程式碼
#  [:結束索引]  從開頭擷取到結束索引之前
print(var1)
print(var1[:4])#
複製程式碼
012345678
0123
複製程式碼
#  [開始索引:]  從開始索引擷取到字串的最後
print(var1)
print(var1[-1:])
複製程式碼
012345678
8
複製程式碼
# [開始索引:結束索引]  從開始索引擷取到結束索引之前
print(var1)
print(var1[1:4])
複製程式碼
012345678
123
複製程式碼
#  [:]  擷取所有字串
print(var1)
print(var1[:])
複製程式碼
012345678
012345678
複製程式碼
# r'字串'   元字串,所有字串中的轉義字元不會轉義,當作普通字元
var2 = r'這是\n第一個\'字元\"串'
print(var2)
複製程式碼
這是\n第一個\'字元\"串
複製程式碼
var1 = '012345678'
print('var1:'.ljust(15,' '),var1)
print('var1[::-1]:'.ljust(15,' '),var1[::-1])#倒序輸出,步長決定間隔,步長為1,取出資料下標差為1,步長為-1,取出下標差為-1的數
print('var1[-1:2:-1]:'.ljust(15,' '),var1[-1:2:-1])#從-1位置向前數到2位置,但不包含2位置的數
print('var1[1:4:-1]:'.ljust(15,' '),var1[1:4:-1])#從1位置向前數到4位置,無法數到4位置,所以為空字串
print('var1[1:1]:'.ljust(15,' '),var1[1:1])#空字串
print('var1[:2:-1]:'.ljust(15,' '),var1[:2:-1])#從最後位置向前數到2位置,但不包含2位置的數
print('var1[3::-1]:'.ljust(15,' '),var1[3::-1])#從3位置向前數到開頭的位置
複製程式碼
var1:           012345678
var1[::-1]:     876543210
var1[-1:2:-1]:  876543
var1[1:4:-1]:   
var1[1:1]:      
var1[:2:-1]:    876543
var1[3::-1]:    3210
複製程式碼

字串函式

  • var1 = 'Hello World'
  • var.capitalize() 首字母大寫,其他字母變小寫,返回處理後的字串,原字串不變 Hello world,如果首字母是*、空格等字元,則將其他字元至為小寫
  • var.title() 每個單詞首字母大寫,其餘字母變小寫,原字串不變 Hello World,如果首字母是*、空格等字元,依然將首個字母大寫 *Hello World
  • var.upper() 所有字母轉換成大寫,沒有引數,返回處理後的字串,原字串不變 HELLO WORLD
  • var.lower() 所有字母轉換為小寫,沒有引數,返回處理後的字串,原字串不變 hello world
  • var.swapcase() 大寫轉換為小寫,小寫轉換為大寫,沒有引數,返回處理後的字串,原字串不變 HELLO WORLD
  • len(var) 計算容器長度,引數為要求長度(元素個數)的(字串、列表、元組、集合【會去除重複資料】、字典),返回整數值
  • var = 'efefefe'
  • var.count('efe',0,-1) = 1計算指定字串出現的次數,字串.count(查詢字串[,開始索引[,結束索引]]),嚴格區分大小寫,包含開頭不包含結尾
  • var.find('lo',3,7) 查詢某個字串在字串指定範圍中第一次出現的位置,找不到返回-1,指定範圍找到位置仍是在原字串中的位置
  • var.index('lo',3,7)與find功能相同,找不到時報錯
var1 = ' Hello World'
# capitalize()  首字母大寫
print(var1.capitalize())
print(var1)
複製程式碼
 hello world
 Hello World
複製程式碼
# title()     每個單詞首字母大寫
var1 = ' *hello worlD'
print(var1.title())
print(var1)
複製程式碼
 *Hello World
 *hello worlD
複製程式碼
# upper()     所有字母轉換成大寫
var1 = ' *hello worlD'
print(var1.upper())
print(var1)
複製程式碼
 *HELLO WORLD
 *hello worlD
複製程式碼
# lower()     所有字母轉換為小寫
var1 = ' *hello worlD'
print(var1)
print(var1.lower())
print(var1)
複製程式碼
 *hello worlD
 *hello world
 *hello worlD
複製程式碼
# swapcase()   大寫轉換為小寫,小寫轉換為大寫
var1 = ' *hello worlD'
print(var1)
print(var1.swapcase())
print(var1)
複製程式碼
 *hello worlD
 *HELLO WORLd
 *hello worlD
複製程式碼
# len()       計算容器長度
var1 = ' *hello worlD'
print(var1)
print(len(var1),type(len(var1)))
print(var1)
print('列表:',len([1,2,3,4,2]))
print('元組:',len((1,2,3,4,2)))
print('集合:',len({1,2,3,4,2}))#集合會去除重複資料
print('字典:',len({1:2,3:4}))
複製程式碼
 *hello worlD
13 <class 'int'>
 *hello worlD
列表: 5
元組: 5
集合: 4
字典: 2
複製程式碼
# count()     計算字串中某個自符的個數
var1 = 'hello worlD'
print(var1)
print(var1.count('l'))
print(var1[2:7])
print(var1.count(' ',2,7))#查詢指定範圍內的指定字元的個數
print(var1.count('l',2,7))#查詢指定範圍內的指定字元的個數
var = 'efefefe'
print(var.count('efe',0,-1)) 
複製程式碼
hello worlD
3
llo w
1
2
1
複製程式碼
# find()      查詢某個字元在字串指定範圍中第一次出現的位置,找不到返回-1
var1 = 'hello worlD'
print(var1)
print(var1.find('lo'))#找lo第一次出現的位置
print(var1.find('L'))#嚴格區分大小寫
print(var1[3:7])#
print(var1.find('l',3,7))#查詢指定範圍內的指定字元的第一次出現的位置
#該位置是在原字串中的位置
複製程式碼
hello worlD
3
-1
lo w
3
複製程式碼
# index()     與find功能相同,找不到時報錯
print(var1)
print(var1.index('l'))
print(var1[3:7])#
print(var1.index('l',3,7))#查詢指定範圍內的指定字元的第一次出現的位置
#該位置是在原字串中的位置
print(var1.index('d',3,7))
複製程式碼
hello world
2
lo w
3



---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-54-5b7535a7e914> in <module>()
      5 print(var1.index('l',3,7))#查詢指定範圍內的指定字元的第一次出現的位置
      6 #該位置是在原字串中的位置
----> 7 print(var1.index('d',3,7))


ValueError: substring not found
複製程式碼

檢測類函式返回布林型

  • var.satrtswith('He') 檢測字串是否以某個字串開頭的,區分大小寫
  • var.endswith('ld') 檢測字串是否以某個字串結尾的,區分大小寫
  • var.isupper() 檢測字串是否全部大寫
  • var.islower() 檢測字串是否全部小寫
  • var.istitle() 檢測字串是否符合title格式,符合的格式('Hello World',' Hello World','*Hello World','Hello&World')
  • var.isalnum() 檢測是否由數字、字元(包含文字字母,不包含空格等字元)
  • var.isalpha() 檢測字串是否以字元(包含漢字、字母組成,不包含空格等字元)
  • var.isdigit() 檢測字串是否以10進位制數字組成
  • var.isnumeric() 檢測字串是否以數字組成
  • var.isdecimal() 檢測字串是否以數字組成
  • var.isspace() 檢測字串是否以空格組成 #tab也會認為是空格,是否和系統有關?
# satrtswith()  檢測字串是否以某個字串開頭的,嚴格區分大小寫
print(var1.startswith('hel'))
print(var1.startswith('Hel'))
複製程式碼
True
False
複製程式碼
# endswith()   檢測字串是否以某個字串結尾的
print(var1)
print(var1.endswith('rld'))
print(var1.endswith('rlD'))
複製程式碼
hello world
True
False
複製程式碼
# isupper()    檢測字串是否全部大寫
print(var1.isupper())
複製程式碼
False
複製程式碼
# islower()    檢測字串是否全部小寫
print(var1.islower())
複製程式碼
True
複製程式碼
# istitle()    檢測字串是否符合title格式
var1 = 'HelloWorld'
print(var1.istitle())
var1 = 'Hello World'
print(var1.istitle())
var1 = '*Hello World'
print(var1.istitle())
var1 = 'Hello*World'
print(var1.istitle())
var1 = 'Hello&World'
print(var1.istitle())
複製程式碼
False
True
True
True
True
複製程式碼
# isalnum()    檢測是否由數字、字元(包含文字字母),空格不算字母,只是字元
var1 = 'Hello World'
print(var1)
print(var1.isalnum())
print('helloworld'.isalnum())
複製程式碼
Hello World
False
True
複製程式碼
# isalpha()    檢測字串是否以字元(包含漢字、字母組成)
print(var1)
print(var1.isalpha())
print('helloworld'.isalpha())
複製程式碼
Hello World
False
True
複製程式碼
# isdigit()    檢測字串是否以10進位制數字組成
var1 = '3215 436'
print(var1)
print(var1.isdigit())
print('010232'.isdigit())
複製程式碼
3215 436
False
True
複製程式碼
# isnumeric()   檢測字串是否以數字組成
print(var1)
print(var1.isnumeric())
print('132432543'.isnumeric())
複製程式碼
hello world
False
True
複製程式碼
# isdecimal()  檢測字串是否以數字組成
print(var1)
print(var1.isdecimal())
print('132432543'.isdecimal())
複製程式碼
hello world
False
True
複製程式碼
# isspace()   檢測字串是否以空格組成
print(var1)
print(var1.isspace())
print('     '.isspace())#tab也會認為是空格,是否和系統有關?
複製程式碼
hello world
False
True
複製程式碼

字串分割、填充

  • var = ' hello,world '
  • var.split(',w') 將字串進行切割操作,返回列表
  • var.splitlines(True\False) 按照指定字元(回車\r,\n,\r\n "三引號中的換行")將字串進行切割操作,True保留切割的字元
  • 將容器中的字串使用指定的字元進行連線成一個字串,(字串、列表、元組、集合、字典)都可以使用,字典保留key
  • var.join(var2、list、tuple、dict),只有一個引數
  • var.zfill(10) 0填充函式 125 -—》0000000125 ,引數只有一個,填充後的長度
  • var.center(10,'@') 使用指定的字元將字串填充至指定的長度,原字串居中顯示,奇數個字元前面短後面長,引數只能是單個字元,空字元多字元都報錯
  • var.ljust(10,'@') 使用指定字元將字串填充至指定的長度,後設資料左對齊,
  • var.rjust(10,'@') 使用指定字元將字串填充至指定長度,後設資料右對齊
  • var.strip('ab') 去掉左右兩側的指定的字串,不指定字串刪除空格,引數為'ab',則會去除a和b,沒有順序
  • var.lstrip('ab') 去掉左側指定的連續的字元,不指定字元刪除空格,同上
  • var.rstrip('ab') 去掉右側指定的連續的字元,不指定刪除空格,同上
  • var.maketrans() 指定字典
  • var.translate() 替換操作
  • 使用指定字串替換指定的字串中的字串,1:old、2:new、3:替換的數量0不替換>0替換指定數量的從前向後替換<0所有的
  • var.replace('ll','LL',2)
  • var = 'abc***abc'
  • zd = str().maketrans('abc*','def0') #建立字典
  • result = var.translate(zd) #使用字典替換 #不改變原來的字串
var1 = '   hello,world   '
# split()     將字串進行切割操作
print(var1)
print(var1.split(',w',True))
print(var1)
複製程式碼
   hello,world   
['   hello', 'orld   ']
   hello,world   
複製程式碼
var1 = '   he\rl\r\nlo\nworld   '
var2 = '''   he\rl\r\nlo\nwor
ld   '''
# splitlines()  按照指定字元(回車\r,\n,\r\n "三引號中的換行")將字串進行切割操作,返回列表
print(var1)
print(var1.splitlines())
print(var1.splitlines(True))#保留\n

print('var2:')
print(var2)
print(var2.splitlines())
print(var2.splitlines(True))#保留\n
複製程式碼
l
lo
world   
['   he', 'l', 'lo', 'world   ']
['   he\r', 'l\r\n', 'lo\n', 'world   ']
var2:
l
lo
wor
ld   
['   he', 'l', 'lo', 'wor', 'ld   ']
['   he\r', 'l\r\n', 'lo\n', 'wor\n', 'ld   ']
複製程式碼
# join()      將容器中的字串使用指定的字元進行連線成一個字串
var1 = '*'
var2 = ['a','b','c','d','e']
# split()     將字串進行切割操作
print(var1)
print(var1.join(var2))
var2 = {'a','b','c','d','e'} 
print(var1.join(var2))      #集合每次都不一樣
var2 = {'a':'b','c':'d'}    #字典保留key
print(var1.join(var2))      
var2 = ['a','b','c','d','e']
print(''.join(var2))#使用空字串連線
print(str().join(var2))#str()返回空字串
var2 = 'abcde'
print(var1.join(var2))
print(var1)
複製程式碼
*
a*b*c*d*e
d*a*c*b*e
a*c
abcde
abcde
*
複製程式碼
# zfill()     0填充函式 125 -—》0000000125
var1 = '*'
print(var1.zfill(10))
print(var1)
複製程式碼
000000000*
*
複製程式碼
# center()    使用指定的字元將字串填充至指定的長度,原字串居中顯示,奇數個字元前面短後面長
var1 = '*'
print(var1.center(10,'a'))
print(var1)
複製程式碼
aaaa*aaaaa
*
複製程式碼
# ljust()     使用指定字串填充至指定的長度,後設資料左對齊
var1 = 'a'
print(var1.ljust(10,'*'))#第二個引數只能是一個字元
print(var1)
複製程式碼
a*********
a
複製程式碼
# rjust()     使用指定字串填充至指定長度,後設資料右對齊
var1 = 'a'
print(var1.rjust(10,'*'))
print(var1)
複製程式碼
*********a
a
複製程式碼
# strip()     去掉左右兩側的指定的字串,不指定字串刪除空格,也不影響原字串
var1 = '***a***'
print(var1.strip())
print(var1)
var1 = 'efefefafefefe'
print(var1.strip('ef'))
print(var1)
複製程式碼
***a***
***a***
a
efefefafefefe
複製程式碼
# lstrip()    去掉左側指定的連續的字元,不指定字元刪除空格
var1 = 'efefefa***'
print(var1.lstrip('ef'))
print(var1)

var1 = 'efefefa***'
print(var1.lstrip('fe'))#容器中的字元全部會找到並刪除
print(var1)
複製程式碼
a***
efefefa***
a***
efefefa***
複製程式碼
# rstrip()    去掉右側指定的連續的字元,不指定刪除空格
var1 = 'efefa***efdef'
print(var1.rstrip('fe'))#容器中的字元全部會找到並刪除
print(var1)
複製程式碼
efefa***efd
efefa***efdef
複製程式碼
# maketrans()  指定字典
# translate()  替換操作
var = 'abc***abc'
zd = str().maketrans('abc*','def0')
result = var.translate(zd)
print(result)
複製程式碼
def000def
複製程式碼

相關文章