1. 程式人生 > 實用技巧 >day7:字串的操作/方法&字串的格式化format&列表的操作

day7:字串的操作/方法&字串的格式化format&列表的操作

字串的相關操作

1.字串的拼接

 strvar = "vegeta"+"ble"
print(strvar) # vegetable

2.字串的重複

strvar = "good" * 3

3.字串的跨行拼接 使用\

 strvar = "abcdefghijklmnopqrst" \
"uvwxyz"
print(strvar) # abcdefghijklmnopqrstuvwxyz

4.字串的索引

 '''
正向索引 0123
strvar = "1234"
逆向索引 -4-3-2-1
'''

5.字串的切片

注意: [開始索引:結束索引:間隔值]

res = strvar[::2] # 0 2 4 6 8..... 從開始擷取到最後

res = strvar[::-1] # -1 -2 -3 -4 -5 -6..... 從結尾擷取到最前

 # [開始索引:]  從開始索引擷取到字串的最後
strvar="紅橙黃綠青藍紫"
res = strvar[4:]
print(res) # [:結束索引] 從開頭擷取到結束索引之前(結束索引-1)
res = strvar[:5]
print(res) # [開始索引:結束索引] 從開始索引擷取到結束索引之前(結束索引-1)
res = strvar[1:3]
print(res) # [開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取字元
# 正序
res = strvar[::2] # 0 2 4 6 8..... 從開始擷取到最後
print(res)
# 倒序
res = strvar[::-1] # -1 -2 -3 -4 -5 -6.....
print(res) # [:]或[::] 擷取所有字串
res1 = strvar[:]
res2 = strvar[::]
print(res1)
print(res2)

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

字串的方法

常規:

 # capicalize 字串首字母大寫
strvar ="what is your name"
res = strvar.capitalize()
print(res) # What is your name # title 每個單詞的首字母大寫
strvar ="what is your name"
res = strvar.title()
print(res) # What Is Your Name # upper 將所有字母變成大寫
strvar ="what is your name"
res = strvar.upper()
print(res) # WHAT IS YOUR NAME # lower 將所有字母變成小寫
strvar = "HELLO KITTY"
res = strvar.lower()
print(res) # hello kitty # swapcase 大小寫互換
strvar = "AAAAbbbb"
res = strvar.lower()
print(res) # aaaaBBBB # len 計算字串的長度
strvar = "AAAAbbbb"
res = len(strvar)
print(res) # # count 統計字串中某個元素的數量
strvar = "AAAAbbbb"
res = strvar.count("A")
print(res) # # find 查詢某個字串第一次出現的索引位置(推薦使用)
'''字串.find("字元",開始索引,結束索引) 如果找不到直接返回-1'''
strvar = "abcdefabc"
res = strvar.find("a") #
res = strvar.find("a",2) #
res = strvar.find("d",2,5) # 3 結束索引本身取不到,取到之前的那個值
print(res) # index與find功能相同,find找不到返回-1,index找不到資料會報錯
res = strvar.index("d",6,8) # error # startswith 判斷是否以某個字元或字串為開頭
'''
字串.startswith("字串",開始索引,結束索引)
如果存在返回True,否則返回False
'''
strvar = "abcdefg"
res = strvar.startswith("a") # True
res = strvar.startswith("b",1) # True
res = strvar.startswith("c",2,5) # True 2 3 4
print(res) # endswith 判斷是否以某個字元或字串結尾
res = strvar.endswith("g") # True
res = strvar.endswith("g",-6) # True
res = strvar.endswith("d",-6,-3) # True
print(res)

is系列:

 # isupper 判斷字串是否都是大寫字母
strvar = "ABCD"
res = strvar.isupper()
print(res) # True # islower 判斷字串是否都是小寫字母
strvar = "abcd123"
res = strvar.isupper()
print(res) # True # isdecimal 檢測字串是否以數字組成 必須是純數字
strvar = ""
strvar = "123.4567"
res = strvar.isdecimal()
print(res)

填充/去除:

 strvar = "abc"
# ljust 填充字串,原字元居左(預設填充空格)
res = strvar.ljust(10)
print(res)
# rjust 填充字串,原字元居右(預設填充空格)
res = strvar.rjust(10)
print(res)
# center 填充字串,原字元居中(預設填充空格)
res = strvar.center(10) # 原字串長度+填充字元長度=10,預設填充空格
res = strvar.center(10,"#")
print(res) # strip 預設去掉首尾兩邊的空白符
strvar = "####abcd####"
res = strvar.strip("#") # 指定去掉的符號
print(res)
# rstrip 去掉右邊某個字元
print(strvar.rstrip("#"))
# rstrip 去掉左邊某個字元
print(strvar.lstrip("#"))

字串最重要的三個方法:

 # split 按某字元將字串分割成列表(預設字元是空格)
strvar = "one two three four"
lst = strvar.split()
strvar= "one-two-three-four"
lst = strvar.split("-") # 從左到右分隔
lst = strvar.rsplit("-",2) # 從右到左分隔,可以指定分隔的次數
print(lst) # join 按某字元將列表拼接成字串
lst = ['five','six','seven','eight']
res = "-".join(lst)
print(res) # replace 替換,把字串的舊字元替換成新字元
'''replace(要替換的字元,替換成什麼,替換的次數)'''
strvar = "這隻小狗真可愛,真呀真可愛"
res = strvar.replace("可愛","有趣")
res = strvar.replace("可愛","有趣",1)
print(res)

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

字串的格式化:

# 1.順序傳參
strvar = "{}喜歡吃{}".format("我","蘋果")
print(strvar) # 2.索引傳參
strvar = "{1}喜歡吃{0}".format("蘋果","我")
print(strvar) # 3.關鍵字傳參
strvar = "{thing2}喜歡吃{thing1}".format(thing1="蘋果",thing2="我")
print(strvar) # 4.容器型別資料(列表或元組傳參)
strvar = "{0[2]}喜歡吃{1[1]}".format(["小紅","小明","小剛"],("蘋果","香蕉","菠蘿"))
print(strvar) # format當中,不能使用逆向下標,不識別
strvar = "{0[-1]}喜歡吃{1[-1]}".format(["小紅","小明","小剛"],("蘋果","香蕉","菠蘿"))
print(strvar) # 如果容器是字典
strvar="{group1[xiaoming]}喜歡吃{group2[0]}".format(group1={"xiaohong":"小紅","xiaoming":"小明"},group2=("香蕉","蘋果"))
print(strvar)

format 填充符號的使用和轉換成特殊符號的使用:

 #  format的填充符號的使用(^ < >)
"""
^ 原字串居中
< 原字串居左
> 原字串居右 {who:*^10}
who:關鍵字引數
*:要填充的字元
^:原字串居中
10:總長度=原字串長度+填充字元長度
""" strvar = "{who:*^10}在{where:>>10}吃{what:!<10}".format(who="我",where="別人家",what="蘋果")
print(strvar) # 進位制轉換成特殊符號的使用( :d :f :s :,) # :d 整型佔位符 要求型別必須是整型
strvar = "我吃了{:d}個蘋果".format(3) #3.5 error
# :2d 佔用兩位,不夠拿空格來補,預設居右
strvar = "我吃了{:2d}個蘋果".format(3)
# < > ^ 調整對應的位置
strvar = "我吃了{:<2d}個蘋果".format(3)
strvar = "我吃了{:<3d}個蘋果".format(3)
print(strvar) # :f 浮點型佔位符(要求型別必須是浮點型)
strvar = "我的成績是{:f}".format(96.25)
# .2f 小數點保留兩位
strvar = "我的成績是{:.2f}".format(96.25)
print(strvar) # :s 字串佔位符 (要求型別必須是字串)
strvar = "{:s}".format("啦啦啦啦啦")
print(strvar) # :, 金錢佔位符
strvar = "{:,}".format(3256224583)
print(strvar) # 綜合案例
strvar = "我今年{:d}歲,我的語文分數是{:.1f},我心情{:s}".format(23,98.65,"非常好")
print(strvar)

列表的操作:

# ### 列表的相關操作

# 1.列表的拼接(同元組)
lst1 = [1,2,3]
lst2 = [4,5,6,7,8,8]
res = lst1 + lst2
print(res) # 2.列表的重複(同元組)
res = lst1 * 6
print(res) # 3.列表的切片(同元組)
# 語法:列表[::] 完整格式:[開始索引:結束索引:間隔值]
# (1)[開始索引:] 從開始索引擷取到列表的最後
# (2)[:結束索引] 從開頭擷取到結束索引之前(結束索引-1)
# (3)[開始索引:結束索引] 從開始索引擷取到結束索引之前(結束索引-1)
# (4)[開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取列表元素值
# (5)[:]或[::] 擷取所有列表 lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
# (1) [開始索引:] 從開始索引擷取到列表的最後
res = lst[3:]
print(res)
# (2)[:結束索引] 從開頭擷取到結束索引之前(結束索引-1)
res = lst[:6]
print(res)
# (3)[開始索引:結束索引] 從開始索引擷取到結束索引之前(結束索引-1)
res = lst[3:6]
print(res)
# (4)[開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取列表元素值
# 正向擷取
res = lst[::2]
print(res)
# 逆向擷取
res = lst[::-2]
print(res)
# (5)[:]或[::] 擷取所有列表
res = lst[:]
res = lst[::]
print(res) # 4.列表的獲取(同元組)
# 0 1 2 3 4 5 6 7
lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
# -8 -7 -6 -5 -4 -3 -2 -1 res = lst[6]
res = lst[-2]
print(res) # 5.列表的修改(可切片)
'''
要求的資料型別是:可迭代性資料(容器型別資料,range物件,迭代器)
''' lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
# 利用切片可以一次修改多個元素,沒有個數上的限制
lst[1:3] = "abcdef"
print(lst) # 切片配合步長,切出多少個元素,修改多少個元素
lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
res = lst[::2] # Alan Sun Huahai Orange
lst[::2] = range(1,5)
print(lst) # 6.列表的刪除
lst=["Alan","Cat","Sun","Wuming","Huahai","Mc","Orange","Rxy"]
del lst[-1]
print(lst) # 刪除的是變數res本身,不是列表中的元素
'''
res = lst[-1]
del res
print(lst)
''' # del lst[:2]
del lst[::3] #0 3 6 9 12...
print(lst) # 元組中的列表,裡面的元素可以修改;
tup = (1,2,3,[4,5,6,(7,8,9)])
tup[-1][1] = 66
print(tup)