1. 程式人生 > >Python 基礎之字符串操作,函數及格式化format

Python 基礎之字符串操作,函數及格式化format

對比 小寫 name 撒旦 替換字符 一個 isalnum digi 字母

  1. 字符串的相關操作
  2. 字符串的相關函數
  3. 字符串的格式化format

1.字符串的相關操作
(1)字符串的拼接 +
strvar1 = "我愛你,"
strvar2 = "親愛的姑涼"
res = strvar1 + strvar2
print(res)

(2)字符串的重復 *
strvar1 = "重讀的事情說三遍"
strvar1 = strvar1*3
print(strvar1)

(3)字符串的跨行拼接 \
str1 = "dsdqbidwqdwqdb"\
"ewqhoqheoq"\
"你好明天"
print(str1)

(4)字符串的索引
# 0 1 2 3 4 5
strvar = "道路一片光明

"
# -6 -5 -4 -3 -2 -1
res = strvar[4]
print(res)
res = strvar[-2]
print(res)


(5)字符串的切片:切片就是截取字符串的意思
語法 =》 字符串[::] 完整格式: [開始索引:結束索引:間隔值]
1[開始索引] 從開始索引截取到字符串的最後
2[:結束索引] 從開頭截取到結束索引之前(結束索引-1
3[開始索引:結束索引] 從開始索引截取到結束索引之前(結束索引-1
(4)[開始索引:結束索引:間隔值] 從開始索引截取到結束索引之前按照指定的間隔值截取字符
5[:] [::]

截取所有字符

strvar = "愛往者愛返,福往者福來"
#1[開始索引] 從開始索引截取到字符串的最後
res = strvar[3:]
print(res)

#(2)[:結束索引] 從開頭截取到結束索引之前(結束索引-1
res = strvar[:5]
print(res)

#3[開始索引:結束索引] 從開始索引截取到結束索引之前(結束索引-1
res = strvar[6:9]
print(res)

#4[開始索引:結束索引:間隔值] 從開始索引截取到結束索引之前按照指定的間隔值截取字符
#愛者返福者
# 0 2 4 6 8 愛 者 返 福 者
res = strvar[0:9:2]
print(res)

#end 不寫一味的截取到最後
#3 6 9 愛 福 福
res = strvar[:3:3]
print(res)

#start 開始索引不寫,意味著從頭開始
# 0 4 愛返
res = strvar[:7:4]
print(res)

# 0 2 4 6 8 10 愛返者福者
strvar = "愛返者愛返,福往者福來"
res = strvar[::2]
print(res)

#倒序 -1 -2 -3 -4 。。。
res = strvar[::-1]
print(res)

#(5)[:] [::] 截取所有字符串
res = strvar[:]
res = strvar[::]
print(res)

2.字符串相關函數

(函數就是方法的意思,完成某個功能)

語法: 字符串.函數

常見的字符串函數如下:

capitalize 字符串首字母大寫

title 每個單詞的首字母大寫

upper 將所有字母變成大寫

lower 將所有字母變成小寫

swapcase 大小寫互換

len 計算字符串的長度

count 統計字符串中某個元素的數量

find 查找某個字符串第一次出現的索引位置

index find 功能相同 find找不到返回-1,index找不到數據直接報錯

startswith 判斷是否以某個字符或字符串為開頭

endswith 判斷是否以某個字符或字符串結尾

isupper 判斷字符串是否都是大寫字母

islower 判斷字符串是否都是小寫字母

istitle 判斷字符串是否每個單詞都首字母大寫

isalnum 判斷字符串是否是由數字、字母、漢字組成

isalpha 判斷字符串是否由字母或文字組成

isdigit 檢測字符串數是數字組成 接受二進制字節流

isdecimal 檢測字符串是否以數字組成 必須是純數字

isnumeric 檢測字符串是否以數字組成 接受中文""

isspace 判斷字符串是否由空白符組成

split 按某字符將字符串分割成列表(默認字符是空格)

join 按某字符將列表拼接成字符串(容器類型都可)

splitlines 按換行來進行切分(\n)

zfill 填充字符串(默認填充0,原字符串右對齊)

ljust 填充字符串,原字符居左 (默認填充空格)

rjust 填充字符串,原字符居右 (默認填充空格)

center 填充字符串,原字符居中 (默認填充空格)

strip 默認去掉首尾兩邊的空白符

rstrip 去掉右邊某個字符

lstrip 去掉左邊某個字符

replace()

功能: 把字符串的舊字符換成新字符

格式: 字符串.replace(‘舊字符‘,‘新字符‘[, 限制替換的次數])

返回值: 替換之後的字符串

#maketrans translate 是一對

maketrans()

功能: 制作用於字符串替換的映射表

格式: 字符串.maketrans(‘查找字符‘,‘替換字符‘)兩個字符必須長度相等

返回值: 字典

translate()

功能: 進行字符串替換操作

格式: 字符串.translate(maketrans返回的字典)

返回值: 替換之後的字符串

以下對一些相對比較常用的進行講解舉例:

1 .capitalize 字符串首字母大寫,除了首字母後的字母都會變成小寫
strvar = "this is my world"
res = strvar.capitalize() #這句話的首字母變成了大寫
print(res)

2 .title 每個單詞的首字母大寫 (非字母類的就可以讓後面字符大寫)
# strvar = "this is my world"
strvar = "this is 222my ###world" #即使有什麽別的數字也能識別到單詞並使其首字母變成大寫
res = strvar.title()
print(res)

3 .upper 將所有字母變成大寫
4 .lower 將所有字母變成小寫
strvar = "abcdefdqd"
res = strvar.upper()
print(res)
res = strvar.lower()
print(res)

5 .swapcase 大小寫互換
strvar = "aa bYYYYbb cHHHHHc ddd www "
res = strvar.swapcase()
print(res)

6 .len 計算字符串的長度 (所有容器類型數據都可以使用len
strvar = "阿士大夫撒地方撒旦法師打發盡快哈手機看地方撒即可勞動防護"
res = len(strvar)
print(res)

7 .conut 統計字符串中某個元素的個數
strvar = "阿士大夫撒地方撒旦法師打發盡快哈手機看地方撒即可勞動防護可以可以可以"
res = strvar.count("")
print(res)

8 . find 查找某個字符串第一次出現的索引位置
find("字符串",start,end) 從哪裏找到哪裏結束 高位end取不到
如果find沒找到 , 返回-1

strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.find("F")
print(res)
res = strvar.find("name")
print(res) #這個單詞從41開始

#如果有開始,沒有結束,默認查找到最後
res = strvar.find("F",4)
print(res)
res = strvar.find("s",14,16) #-1
print(res)
9 .index find 功能相同 find找不到返回-1,index找不到數據直接報錯
# index index find 用法一樣,只不過如果找不到直接報錯
# 推薦使用find ****
# res = strvar.index("!") #ValueError: substring not found

10 .startswith 判斷是否以某個字符或字符串為開頭
"""endswith startswith("字符串",start,end) 高位end取不到"""

strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.startswith("oh")
print(res) #判斷Ture False

res = strvar.endswith("L")
print(res)
print(len(strvar))
#有點問題
res = strvar.endswith("s",6,47) #
print(res)
res = strvar.endswith("r",-6,-1)
print(res)
"""
#自己舉的例子
s = "1234567"
res = len(s)
print(res)
res = strvar.endswith("5",1,4)
print(res)
"""
11.isalpha 判斷字符串是否由字母或文字組成
strvar = "sddfqwfqfqwq321231"
print(strvar.isalpha())
strvar = "qweqeqeq是你"
print(strvar.isalpha())

12 .isdigit 檢測字符串數是數字組成 接受二進制節流(可以用於檢測字符串是否是數字)
strvar = "12345678954321"
res = strvar.isdigit()
print(res)

#
二進制字節流:用來存儲或傳輸數據用的一種數據
語法: b‘字符串‘ b後面的字符串只能是ascii編碼中的字符集
byte 字節 bytes 字節流
‘a‘ 字符 "aaa" 字符串

如果是中文字符 ,需要用encode decode

strvar = b‘123456‘
print(strvar,type(strvar))
# strvar = b"中國人站起來了" #error 因為編碼不識別
# print(strvar)

res = strvar.isdigit()
print(res)

13.isdecimal 檢測字符串是否以數字組成 必須是純數字
strvar = "2132546"
#star = b‘23456‘ #error
res = strvar.isdecimal()
print(res)

14 .split 按某字符將字符串分割成列表(默認字符是空格)
strvar = "you can you up no can no bb"
res = strvar.split() #默認按照空格分隔
print(res)

strvar = "you:can:you:up:no:can:no:bb"
res = strvar.split(":")
print(res)
#可以接受2個參數,第二個參數意味著分隔幾次(從左到右)
res = strvar.split(":",3) #意思只分隔三次,另外的不分
print(res)

#可以反向分隔 rsplit (從右到左)
res = strvar.rsplit(":",2)
print(res)

15. join 按某字符將列表拼接成字符串 (容器類型都可)
lst = [‘you‘, ‘can‘, ‘you‘, ‘up‘, ‘no‘, ‘can‘, ‘no‘, ‘bb‘]
res = ‘+‘.join(lst)
print(res)
res = ‘|‘.join(lst)
print(res)
res = ‘ ‘.join(lst)
print(res)

16 .center 填充字符串,原字符居中 (默認填充空格)
‘‘‘ 原字符個數+要填充的字符一共10‘‘‘
strvar = "你好"
res = strvar.center(10,"!") #可以選擇要填充的符號
print(res)
res = strvar.center(10) #如果不寫默認填充空格
print(res)

17 .strip 默認去掉首尾兩邊的空白符 (空格 \n \t \r\n)

#可用於input輸入後
strvar = "\t 大妹子真漂亮 \n"
print(strvar)
res = strvar.strip()
print(res)

18 . replace()
strvar = "可愛滴小狼狗喜歡吃肉,有沒有,有沒有,還有沒有"
# replace("原字符串","要替換的字符串",[可選擇替換幾次])
res = strvar.replace("有沒有","真沒有")
print(res)
res = strvar.replace("有沒有","真沒有",1) #只換了一次
print(res)

還有以下沒有舉例子的字符串的方法:

isupper 判斷字符串是否都是大寫字母

islower 判斷字符串是否都是小寫字母

istitle 判斷字符串是否每個單詞都首字母大寫

isalnum 判斷字符串是否是由數字、字母、漢字組成

isnumeric 檢測字符串是否以數字組成 接受中文""

isspace 判斷字符串是否由空白符組成

splitlines 按換行來進行切分(\n)

zfill 填充字符串(默認填充0,原字符串右對齊)

ljust 填充字符串,原字符居左 (默認填充空格)

rjust 填充字符串,原字符居右 (默認填充空格)

rstrip 去掉右邊某個字符

lstrip 去掉左邊某個字符

3.字符串的格式化.format

語法: {} 來進行占位
1)順序傳參
2)索引傳參
3)關鍵字傳參
4)容器類型數據(列表或元組)傳參

5format的填充符號的使用( ^ > <

6)進制轉換等特殊符號的使用( :d :f :s :,

(1)順序傳參
strvar = "{}{}一個飛吻".format("LT","HXD")
print(strvar)

(2)索引傳參
strvar = "{1}{0}開了一槍,飲彈而亡".format("王傑","周亮")
print(strvar)

(3)關鍵字傳參
strvar = "{hjy}{zyw}進行掃射,雞飛狗跳,狗急跳墻".format(zyw="張文",hjy="黃勇")
print(strvar)

(4)容器類型傳參
#1
strvar = "{0[1]}{1[1]}發一份情書和一張私人照片,鼻血直冒三千尺".format(["黃一政","劉五星","熊華"],("素江南","陳浩"))
print(strvar)
#(2)如果是字典,場景發生在format字符串格式化當中,主要通過鍵取值時,不要加上引號
strvar = "{group1}{group2[sjn]}發一份情書和一張私人照片,鼻血直冒三千尺"
res = strvar.format(group1 = ["黃一政","劉五星","熊華"],group2 = {"sjn":"素江南","ch":"陳浩"})
print(res)

(5)format的填充符號的使用( ^ > <
{who:*<10}
^ > <
^ :原字符串居中
> : 原字符串居右
< :原字符串居左
10 : 原字符 + 要填充的字符串 一共 10

strvar = "{who:*^10}在長春長生{something:>>10},心情{feel:!<10}"
res = strvar.format(who="潘偉成",something="紮一打疫苗",feel="爽歪歪")
print(res)

(6)進制轉換等特殊符號的使用(:d :f :s :,
# :d 整型占位符
strvar = "潘柏買了{:d}個蘭博基尼"
res = strvar.format(10)
print(res)

#:3d
strvar = "潘柏買了{:3d}個蘭博基尼"
res = strvar.format(10) #默認居右
print(res)

#:^3d
strvar = "潘柏買了{:^3d}個蘭博基尼"
res = strvar.format(10) #居中
print(res)
strvar = "潘柏買了{:>4d}個蘭博基尼"
res = strvar.format(10) #居右
print(res)
strvar = "潘柏買了{:<4d}個蘭博基尼"
res = strvar.format(10) #居左
print(res)

#:f 浮點型占位符98,94, :.2f小數保留2
strvar = "許經雄體重{:.2f}"
res = strvar.format(98.32131321)
print(res)

#:s 字符串占位符
strvar = "{:s}"
res = strvar.format("好看的皮囊千篇一律,有趣的靈魂200多斤")
print(res)

#:,金錢占位符
strvar = "{:,}"
res = strvar.format(2313131)
print(res)

Python 基礎之字符串操作,函數及格式化format