標籤:拼接 唯讀 注意 -- join 老王 cas 編碼格式 img
字串的方法及注釋
capitalize() |
把字串的第一個字元改為大寫 |
casefold() |
把整個字串的所有字元改為小寫 |
center(width) |
將字串置中,並使用空格填充至長度width的新字串 |
count(sub[,start[,end]]) |
返回sub在字串裡邊出現的次數,start和end參數表示範圍,可選。 |
encode(encoding=‘utf-8‘, errors=‘strict‘) |
以encoding指定的編碼格式對字串進行編碼。 |
endswith(sub[,start[,end]]) |
檢查字串是否以sub子字串結束,如果是返回True,否則返回False。start和end參數表示範圍,可選。 |
expandtabs([tabsize=8]) |
把字串中的tab符號(\t)轉換為空白格,如不指定參數,預設的空格數是tabsize=8。 |
find(sub[,start[,end]]) |
檢測sub是否包含在字串中,如果有則返回索引值,否則返回-1,start和end參數表示範圍,可選。 |
index(sub[,start[,end]]) |
跟find方法一樣,不過如果sub不在string中會產生一個異常。 |
isalnum() |
如果字串至少有一個字元並且所有字元都是字母或數字則返回True,否則返回False。 |
isalpha() |
如果字串至少有一個字元並且所有字元都是字母則返回True,否則返回False。 |
isdecimal() |
如果字串只包含十進位數字則返回True,否則返回False。 |
isdigit() |
如果字串只包含數字則返回True,否則返回False。 |
islower() |
如果字串中至少包含一個區分大小寫字元,並且這些字元都是小寫,則返回True,否則返回False。 |
isnumeric() |
如果字串中只包含數字字元,則返回True,否則返回False。 |
isspace() |
如果字串中只包含空格,則返回True,否則返回False。 |
istitle() |
如果字串是標題化(所有的單詞都是以大寫開始,其餘字母均小寫),則返回True,否則返回False。 |
isupper() |
如果字串中至少包含一個區分大小寫字元,並且這些字元都是大寫,則返回True,否則返回False。 |
join(sub) |
以字串作為分隔字元,插入到sub中所有的字元之間。 >>> str5 = ‘Fishc‘ >>> str5.join(‘12345‘) ‘1Fishc2Fishc3Fishc4Fishc5‘ |
ljust(width) |
返回一個靠左對齊的字串,並使用空格填充至長度為width的新字串。 |
lower() |
轉換字串中所有大寫字元為小寫。 |
lstrip() |
去掉字串左邊的所有空格 |
partition(sub) |
找到子字串sub,把字串分成一個3元組(pre_sub,sub,fol_sub),如果字串中不包含sub則返回(‘原字串’, ’’, ’’) |
replace(old,new[,count]) |
把字串中的old子字串替換成new子字串,如果count指定,則替換不超過count次。>>> str7 = ‘i love fishdm and seven‘ >>> str7.replace(‘e‘,‘E‘,2) ‘i lovE fishdm and sEven‘ |
rfind(sub[,start[,end]]) |
類似於find()方法,不過是從右邊開始尋找。 |
rindex(sub[,start[,end]]) |
類似於index()方法,不過是從右邊開始。 |
rjust(width) |
返回一個靠右對齊的字串,並使用空格填充至長度為width的新字串。 |
rpartition(sub) |
類似於partition()方法,不過是從右邊開始尋找。 |
rstrip() |
刪除字串末尾的空格。 |
split(sep=None, maxsplit=-1) |
不帶參數預設是以空格為分隔字元切片字串,如果maxsplit參數有設定,則僅分隔maxsplit個子字串,返回切片後的子字串拼接的列表。 >>> str7.split () [‘i‘, ‘love‘, ‘fishdm‘, ‘and‘, ‘seven‘] |
splitlines(([keepends])) |
按照‘\n’分隔,返回一個包含各行作為元素的列表,如果keepends參數指定,則返回前keepends行。 |
startswith(prefix[,start[,end]]) |
檢查字串是否以prefix開頭,是則返回True,否則返回False。start和end參數可以指定範圍檢查,可選。 |
strip([chars]) |
刪除字串前邊和後邊所有的空格,chars參數可以定製刪除的字元,可選。 |
swapcase() |
翻轉字串中的大小寫。 |
title() |
返回標題化(所有的單詞都是以大寫開始,其餘字母均小寫)的字串。 |
translate(table) |
根據table的規則(可以由str.maketrans(‘a’,‘b’)定製)轉換字串中的字元。>>> str8 = ‘aaasss sssaaa‘ >>> str8.translate(str.maketrans(‘s‘,‘b‘)) ‘aaabbb bbbaaa‘ |
upper() |
轉換字串中的所有小寫字元為大寫。 |
zfill(width) |
返回長度為width的字串,原字串靠右對齊,前邊用0填充。 |
測試題:0.還記得如何定義一個跨越多行的字串嗎(請至少寫出兩種實現的方法)?方法一:
str1 = ‘‘‘待我長發及腰,將軍歸來可好?
此身君子意逍遙,怎料山河蕭蕭。
天光乍破遇,暮雪白頭老。
寒劍默聽奔雷,長槍獨守空壕。
醉臥沙場君莫笑,一夜吹徹畫角。
江南晚來客,紅繩結髮梢。‘‘‘
方法二:
str2 = ‘待卿長發及腰,我必凱旋迴朝。\
昔日縱馬任逍遙,俱是少年英豪。\
東都霞色好,西湖煙波渺。\
執槍血戰八方,誓守山河多嬌。\
應有得勝歸來日,與卿共度良宵。\
盼攜手終老,願與子同袍。‘
方法三:
str3 = (‘待卿長發及腰,我必凱旋迴朝。‘
‘昔日縱馬任逍遙,俱是少年英豪。‘
‘東都霞色好,西湖煙波渺。‘
‘執槍血戰八方,誓守山河多嬌。‘
‘應有得勝歸來日,與卿共度良宵。‘
‘盼攜手終老,願與子同袍。‘)
1. 三引號字串通常我們用於做什麼使用?
三引號字串不賦值的情況下,通常當作跨行注釋使用,例如:
2. file1 = open(‘ C: \windows\temp\readme. txt‘ , ‘ r‘ ) 表示以唯讀方式開啟“C: \windows\temp\readme. txt”這個文字檔,但事實上是錯,知道為什麼嗎?你會如何修改?
會報錯是因為在字串中,我們約定“\t”和“\r”分別表示“橫向定位字元(TAB)”和“斷行符號符”,因此並不會按照我們計劃的路徑去開啟檔案。
Python 為我們鋪好瞭解決的道路,只需要使用原始字串操作符(R或r)即可:
file1=open(r‘C:\windows\temp\readme.txt‘,‘r‘)
3. 有字串:str1 = ‘ <a href="http: //www. fishc. com/dvd" target="_blank">魚C資源打包</a>‘,請問如何提取出子字串
str1[16:38]
4. 如果使用負數作為索引值進行分區操作,按照第三題的要求你能夠正確目測出結果嗎?
str1[-45:-32]
5. 還是第三題那個字串,請問下邊語句會顯示什麼內容?str1[20:-36]
‘fishc‘
6. 據說只有智商高於150的魚油才能解開這個字串(還原為有意義的字串):str1 =‘i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99‘
str1[::3]
動動手
0. 請寫一個密碼安全性檢查的指令碼代碼:check.py 程式示範: 自己寫的錯誤碼: 混成一片進行判斷
while True:
temp = input(‘輸入密碼‘)
# a = int(temp)
b=len(temp)
c =‘‘‘提升密碼等級的方式:
1.密碼必須由數字、字母及特殊字元三種組合
2.密碼只能由字母開頭
3.密碼長度不能低於16位‘‘‘
d = ‘[email protected]#$%^&*()_=-/,.?<>;:[]{}\|‘
while temp.isspace():
temp = input(‘重新輸入密碼‘)
print(temp,b)
if b<=8 or temp.isalnum():
print(‘低級密碼‘)
print(c)
elif b > 16 and temp.isalnum() and (d in temp):
print(‘高‘)
print(‘請繼續保持‘)
elif b>8 or b<16 or temp.isalnum() or (d in temp ):
print(‘中‘)
print(c)
方法一:
str1 = "[email protected]#$%^&*()_=-/,.?<>;:[]{}\|"
has_str1 = 0
has_num = 0
has_alpha = 0
t = ‘y‘
while t == ‘y‘:
password = input("請輸入需要檢查的密碼組合:")
length = len(password)
while(password.isspace() or length == 0):
password = input(‘您輸入的密碼為空白(或空格),請重新輸入:‘)
for i in password:
if i in str1:
has_str1 = 1
if i.isdigit():
has_num = 1
if i.isalpha():
has_alpha = 1
has = has_str1 + has_num + has_alpha
if length <= 8 or password.isalnum():
level = "低"
if length > 8 and has ==2:
level = "中"
if length >= 16 and has == 3 and password[0].isalpha():
level = "高"
print("您的密碼安全等級評定為:%s"%level)
if level == "高":
print("請繼續保持")
else:
print("""請按以下方式提升您的密碼安全層級:
1.密碼必須由數字、字母及特殊字元三種組合
2.密碼只能由字母開頭
3.密碼長度不能低於16位""")
t = input("還要再測試嗎?(”y“繼續,其他退出)")
注意:特殊的數字開頭的進階密碼沒有判斷
方法二:
symbols = "[email protected]#$%^&*()_=-/,.?<>;:[]{}\|"
chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘
nums = ‘0123456789‘
t = ‘y‘
while t == ‘y‘:
passwd = input(‘請輸入密碼:‘)
length = len(passwd)
#判斷長度
while(passwd.isspace() or length == 0):
passwd = input(‘您輸入的密碼為空白(或空格),請重新輸入:‘)
length = len(passwd)
if length <= 8:
flag_len = 1
elif 8 < length <16:
flag_len = 2
else:
flag_len = 3
flag_con = 0
#判斷是否包含特殊字元
for each in passwd:
if each in symbols:
flag_con +=1
break
#判斷是否包含字母
for each in passwd:
if each in chars:
flag_con += 1
break
#判斷是否包含數字
for each in passwd:
if each in nums:
flag_con += 1
break
#列印結果
while 1:
print("您的密碼安全層級評定為:",end=‘‘)
if flag_len == 1 or flag_con == 1:
print("低")
elif flag_len == 2 or flag_con == 2:
print("中")
else:
print("高")
print("請繼續保持")
break
print("""請按以下方式提升您的密碼安全層級:
1.密碼必須由數字、字母及特殊字元三種組合
2.密碼只能由字母開頭
3.密碼長度不能低於16位""")
break
t = input("還要再測試嗎?(”y“繼續,其他退出)")
注意:判斷進階密碼沒有條件 其他類型都是進階
方法三:
str0 = """請按以下方式提升您的密碼安全層級:
1.必須由數字、字母及特殊字元三種組合(僅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}\|)
2.密碼只能由字母開頭
3.密碼長度不能低於16位"""
str1 = ‘您的密碼安全層級評定為:低\n‘ + str0 + """
4.替王尼瑪給隔壁老王送上一把水果刀
5.告訴你的孩子,他是充話費下送的
6.召集另外三隻小甲魚,喂他們突變劑,救紐約人民於水火
"""
str2 = ‘您的密碼安全層級評定為:中\n‘ + str0 + """
4.扶老奶奶過馬路,幫室友補襪子
"""
str3 = ‘您的密碼安全評定為:高\n請繼續保持!‘
special = "[email protected]#$%^&*()_=-/,.?<>;:[]{}\|"
letter = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘
number = ‘0123456789‘
t = ‘y‘
while t == ‘y‘:
password = input("請輸入需要檢查的密碼組合:")
# 用num來統計字元類型出現次數
num = 0
a = b = c = 0
# 輸入的不可為空
while password == ‘‘:
password = input("不可為空,請重新輸入:")
# 計算num的值,如果輸入的全部是字元,那麼num=0,所以才會有<=1
if password.isnumeric() or password.isalpha():
num = 1
else:
for i in password:
if a == 0 and i in special:
num += 1
a = 1
elif b == 0 and i in number:
num += 1
b = 1
elif c == 0 and i in letter:
num += 1
c = 1
if password[0] in letter and num == 3 and len(password) >= 16:
print(str3)
elif num >= 2 and len(password) >= 8:
print(str2)
elif num <= 1 and len(password) < 8:
print(str1)
t = input("還要再測試嗎?(”y“繼續,其他退出)")
小甲魚Python第十三講課後題--014字串