python基礎 2 字串的操作
阿新 • • 發佈:2018-12-19
-
1 字串
-
1.1字串的概念
字串是一個容器,包含若干個字元並按照一定的順序組織成一個整體。字串支援索引操作。
-
1.2建立字串基本語法
變數名 = “字串資訊” 變數名 = ‘字串資訊’ 變數名 = “”“字串資訊”"" 變數名 = ‘’‘字串資訊’’’
-
1.3注意事項
字串定義過程中如出現"匹配問題,使用"進行轉義
-
-
2. 字串切片
-
2.1字串切片概念
字串切片指獲取字串中的某一部分,形成新的字串物件。
-
2.2字串切片基本語法
字串[開始索引:結束索引] 字串[開始索引:結束索引:步長]
-
-
3. 字串操作
-
3.1基本操作
-
操作格式/函式名稱 | 功能 | 引數 | 返回值 |
---|---|---|---|
變數名[idx] 關鍵詞: 獲取單個字元 | 獲取字串中指定索引位置的字元 | idx:要獲取的索引位置 | 結果是包含了單個字元的字串 |
str1 in str2 關鍵詞: 包含 | 判斷一個字串str2是否包含另一個字串str1 | str1:比對字串物件str2:原始字串物件 | 結果是True或False |
str1 not in str2關鍵詞:不包含 | 判斷一個字串str2是否不包含另一個字串str1 | str1:比對字串物件str2:原始字串物件 | 結果是True或False |
len(str)關鍵詞:長度 | 本操作是一個函式,無須用字串物件呼叫,用於獲取一個字串中所包含的字元數量 | str:字串物件 | 結果是一個int整數 |
max(str)關鍵詞:長度 | 本操作是一個函式,無須用字串物件呼叫,用於獲取字串中排序最大的字元 | str:字串物件 | 結果是一個包含了單個字元的字串 |
min(str)關鍵詞:最小值 | 本操作是一個函式,無須用字串物件呼叫,用於獲取字串中排序最小的字元 | str:字串物件 | 結果是一個包含了單個字元的字串 |
-
3.2 狀態獲取操作
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
islower()關鍵詞:是否全小寫 | 判斷字串是否是全小寫字母組成 | 無 | 結果是True或False |
isupper()關鍵詞:是否全大寫 | 判斷字串是否是全大寫字母組成 | 無 | 結果是True或False |
isdigit()關鍵詞:是否全數字 | 判斷字串是否是由純數字組成 | 無 | 結果是True或False |
isalpha()關鍵詞:是否全字母 | 判斷字串是否是由純字母組成 | 無 | 結果是True或False |
isalnum()關鍵詞:是否全數字字母 | 判斷字串是否是由純字母組成 | 無 | 結果是True或False |
istilte()關鍵詞:是否單詞首字母大寫 | 判斷字串是否是滿足單詞首字母大寫格式 | 無 | 結果是True或False |
startswith(str)關鍵詞:判定字首 | 判斷字串是否以指定字串開始 | str:用於作為判定條件的字串物件 | 結果是True或False |
endswith(str)關鍵詞:判定字尾 | 判斷字串是否以指定字串結束 | str:用於作為判定條件的字串物件 | 結果是True或False |
-
3.3 字元轉換操作
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
lower()關鍵詞:轉小寫 | 字串中所有字母轉小寫字母,支援英文字母 | 無 | 結果是一個字串 |
casefold()關鍵詞:轉小寫 | 字串中所有字母轉小寫字母,支援各種語言 | 無 | 結果是一個字串 |
upper()關鍵詞:轉大寫 | 字串中所有字母轉大寫字母 | 無 | 結果是一個字串 |
swapcase()關鍵詞:大小寫互換 | 字串中字母大寫轉小寫,小寫轉大寫 | 無 | 結果是一個字串 |
title()關鍵詞:單詞首字母大寫其他小寫 | 字串中每個單詞首字母大寫,其餘字母小寫(區分單詞以空格區分) | 無 | 結果是一個字串 |
title()關鍵詞:單詞首字母大寫其他小寫 | 字串中每個單詞首字母大寫,其餘字母小寫(區分單詞以空格區分) | 無 | 結果是一個字串 |
capitalize()關鍵詞:字串首字母大寫其他小寫 | 字串首個字母大寫,其餘字母小寫 | 無 | 結果是一個字串 |
-
3.4格式轉換
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
strip (str)關鍵詞:左右去字元 | 去掉字串左右兩側在引數字串中包含的所有字元 | str:包含了若干個字元的字串 | 結果是一個字串 |
lstrip (str)關鍵詞:左側去字元 | 去掉字串左側在引數字串中包含的所有字元 | str:包含了若干個字元的字串 | 結果是一個字串 |
ljust (len,str)關鍵詞:右側補佔位符 | 使用指定字元在原始字串右側補充到長度為指定值 | len:補充字元後的字串長度str:補充的字元,如果使用多個字元組成的字串將報錯 | 結果是一個字串 |
rjust (len,str)關鍵詞:左側補佔位符 | 使用指定字元在原始字串左側補充到長度為指定值 | len:補充字元後的字串長度str:補充的字元,如果使用多個字元組成的字串將報錯 | 結果是一個字串 |
center (len,str)關鍵詞:左右兩側補佔位符 | 使用指定字元在原始字串兩側補充到長度為指定值,左側補充數量≥右側補充數量 | len:補充字元後的字串長度,str:補充的字元如果使用多個字元組成的字串將報錯 | 結果是一個字串 |
-
3.5連線操作
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
join(str)關鍵詞:佔位連線 | 將原始字串填充到引數的每個字元之間組成新的字串返回 | str:待填充的字串 | 結果是一個字串 |
str1 + str2關鍵詞:字串連線 | 將兩個字串按照順序拼接成一個新的字串返回 | 無 | 結果是一個字串 |
-
3.6 查詢操作
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
find(str,begin,end)關鍵詞:左側查詢 | 從左側查詢字串從指定開始位置到指定結束位置間第一次出現的索引位置 | str:要查詢的字串begin:開始索引,整數,該值要小於end,否則結果為-1end:結束索引,整數,改制要小於begin,否則結果為-1 | 結果是一個int整數,如沒有查詢到返回-1 |
index(str,begin,end)關鍵詞:左側查詢 | 從左側查詢字串從指定開始位置到指定結束位置間第一次出現的索引位置 | str:要查詢的字串begin:開始索引,整數,該值要小於end,否則結果報錯end:結束索引,整數,改制要小於begin,否則結果報錯 | 結果是一個int整數,如沒有查詢到報錯 |
count(str)關鍵詞:字串數量 | 查詢指定字串在原始字串中出現的次數 | str:被查詢的字串 | 結果是一個int整數 |
-
3.7 替換操作
方法名 | 功能 | 引數 | 返回值 |
---|---|---|---|
replace(old_str,new_str,num)關鍵詞:替換 | 使用新字串替換原始字串中的指定字串資訊 | old_str:被替換的字串new_str:新字串num:替換數量 | 結果是一個字串 |
expandtabs()關鍵詞:\t換空格 | 使用空格替換原始字串中的製表位\t | 無 | 結果是一個字串 |
-
案例 找出真凶
字串操作的題目
"""
案例找出真凶
分析:
1.姓 name startswith
2.名 name nick_name find
3.性別 gender ==
4.血型 blood ==
5.籍貫 native find
6.出生日期 idcard 切片,比較運算
"""
db_infos = [{"name": "張三丰","gender": 1, "nick_name": "三爺", "idcard": "110101153808081017", "blood": "b", "native":"湖北省丹江口市武當山玉虛宮"},{"name": "張大彪","gender": 1, "nick_name": "猿仔", "idcard": "130323197711111011", "blood": "b", "native":"河北省秦皇島市武山海關區鞋拔子路膠水衚衕103"}]
# 1. 迴圈列表,取出個人資訊
for person in db_infos:
# 2.取出個人資訊
name = person["name"]
nick_name = person["nick_name"]
gender = person["gender"]
blood = person["blood"]
native = person["native"]
idcard = person["idcard"]
# 3.判斷是否滿足條件
# 3.1 所有條件都滿足,列印個人資訊
# 3.2 只要有一個條件不滿足,檢查下一個人
if not name.startswith("張") :
continue
if name.find("斌") == -1 and nick_name.find("猿") == -1 :
continue
if gender != 1:
continue
if blood.lower() != "b":
continue
if native.find("河北") == -1:
continue
# 身份證號: XXXXXX XXXX XX XX XXX X
if int(idcard[6:10]) < 1975 or int(idcard[6:10]) > 1978 :
continue
# 設計字典,做對應關係(對映)
genders = {1:"男",0:"女",-1:"不詳"}
# 到達此處說明所有條件都已經通過,列印個人資訊
print("姓名:"+name+",曾用名:"+nick_name+",性別:"+genders[gender]+",血型:"+blood+",籍貫:"+native+",身份證號:"+idcard)