python中find函数忽略大小写_python字符串(大小写、判断、查找、分割、拼接、裁剪、替换、格式化)...
一、通用操作
1、Python len()
方法返回對(duì)象(字符、列表、元組等)長(zhǎng)度或項(xiàng)目個(gè)數(shù)。
語(yǔ)法
len()方法語(yǔ)法:
len( q )
參數(shù)
q -- 對(duì)象。
返回值
返回對(duì)象長(zhǎng)度。
實(shí)例
以下實(shí)例展示了 len() 的使用方法:
>>>str = "runoob"
>>> len(str) # 字符串長(zhǎng)度
6
>>> l = [1,2,3,4,5]
>>> len(l) # 列表元素個(gè)數(shù)
5
2、python 成員運(yùn)算符 in 和 not in
Python成員運(yùn)算符測(cè)試給定值是否為序列中的成員,例如字符串,列表或元組。 有兩個(gè)成員運(yùn)算符,如下所述 -
in 如果在指定的序列中找到一個(gè)變量的值,則返回true,否則返回false。
not in 如果在指定序列中找不到變量的值,則返回true,否則返回false。
in
如果在指定的序列中找到值返回 True,否則返回 False。
x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in
如果在指定的序列中沒有找到值返回 True,否則返回 False。
x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
以下實(shí)例演示了Python所有成員運(yùn)算符的操作:
#!/usr/bin/python3
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print ("1 - 變量 a 在給定的列表中 list 中")
else:
print ("1 - 變量 a 不在給定的列表中 list 中")
if ( b not in list ):
print ("2 - 變量 b 不在給定的列表中 list 中")
else:
print ("2 - 變量 b 在給定的列表中 list 中")
# 修改變量 a 的值
a = 2
if ( a in list ):
print ("3 - 變量 a 在給定的列表中 list 中")
else:
print ("3 - 變量 a 不在給定的列表中 list 中")
以上實(shí)例輸出結(jié)果:
1 - 變量 a 不在給定的列表中 list 中
2 - 變量 b 不在給定的列表中 list 中
3 - 變量 a 在給定的列表中 list 中
3、Python身份運(yùn)算符
身份運(yùn)算符用于比較兩個(gè)對(duì)象的存儲(chǔ)單元
is
is 是判斷兩個(gè)標(biāo)識(shí)符是不是引用自一個(gè)對(duì)象
x is y, 類似 id(x) == id(y) , 如果引用的是同一個(gè)對(duì)象則返回 True,否則返回 False
is not
is not 是判斷兩個(gè)標(biāo)識(shí)符是不是引用自不同對(duì)象
x is not y , 類似 id(a) != id(b)。如果引用的不是同一個(gè)對(duì)象則返回結(jié)果 True,否則返回 False。
注: id() 函數(shù)用于獲取對(duì)象內(nèi)存地址。
以下實(shí)例演示了Python所有身份運(yùn)算符的操作:
#!/usr/bin/python3
a = 20
b = 20
if ( a is b ):
print ("1 - a 和 b 有相同的標(biāo)識(shí)")
else:
print ("1 - a 和 b 沒有相同的標(biāo)識(shí)")
if ( id(a) == id(b) ):
print ("2 - a 和 b 有相同的標(biāo)識(shí)")
else:
print ("2 - a 和 b 沒有相同的標(biāo)識(shí)")
# 修改變量 b 的值
b = 30
if ( a is b ):
print ("3 - a 和 b 有相同的標(biāo)識(shí)")
else:
print ("3 - a 和 b 沒有相同的標(biāo)識(shí)")
if ( a is not b ):
print ("4 - a 和 b 沒有相同的標(biāo)識(shí)")
else:
print ("4 - a 和 b 有相同的標(biāo)識(shí)")
以上實(shí)例輸出結(jié)果:
1 - a 和 b 有相同的標(biāo)識(shí)
2 - a 和 b 有相同的標(biāo)識(shí)
3 - a 和 b 沒有相同的標(biāo)識(shí)
4 - a 和 b 沒有相同的標(biāo)識(shí)
is 與 == 區(qū)別:
is 用于判斷兩個(gè)變量引用對(duì)象是否為同一個(gè), == 用于判斷引用變量的值是否相等。
>>>a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
4、Python運(yùn)算符優(yōu)先級(jí)
以下表格列出了從最高到最低優(yōu)先級(jí)的所有運(yùn)算符:
運(yùn)算符
描述
**
指數(shù) (最高優(yōu)先級(jí))
~ + -
按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@)
* / % //
乘,除,求余數(shù)和取整除
+ -
加法減法
>> <<
右移,左移運(yùn)算符
&
位 'AND'
^ |
位運(yùn)算符
<= < > >=
比較運(yùn)算符
== !=
等于運(yùn)算符
= %= /= //= -= += *= **=
賦值運(yùn)算符
is is not
身份運(yùn)算符
in not in
成員運(yùn)算符
not and or
邏輯運(yùn)算符
以下實(shí)例演示了Python所有運(yùn)算符優(yōu)先級(jí)的操作:
#!/usr/bin/python3
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print ("(a + b) * c / d 運(yùn)算結(jié)果為:", e)
e = ((a + b) * c) / d # (30 * 15 ) / 5
print ("((a + b) * c) / d 運(yùn)算結(jié)果為:", e)
e = (a + b) * (c / d); # (30) * (15/5)
print ("(a + b) * (c / d) 運(yùn)算結(jié)果為:", e)
e = a + (b * c) / d; # 20 + (150/5)
print ("a + (b * c) / d 運(yùn)算結(jié)果為:", e)
以上實(shí)例輸出結(jié)果:
(a + b) * c / d 運(yùn)算結(jié)果為: 90.0
((a + b) * c) / d 運(yùn)算結(jié)果為: 90.0
(a + b) * (c / d) 運(yùn)算結(jié)果為: 90.0
a + (b * c) / d 運(yùn)算結(jié)果為: 50.0
and 擁有更高優(yōu)先級(jí):
x = True
y = False
z = False
if x or y and z:
print("yes")
else:
print("no")
以上實(shí)例輸出結(jié)果:
yes
注意:Pyhton3 已不支持 <> 運(yùn)算符,可以使用 != 代替,如果你一定要使用這種比較運(yùn)算符,可以使用以下的方式:
>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
二、與大小寫的相關(guān)方法
xgp = 'hello,wsd'
print(xgp)
# upper():將字符串轉(zhuǎn)換為大寫
xgp1 = xgp.upper()
print(xgp1)
# isupper():判斷字符串是否都為大寫
print(xgp1.isupper())
# lower():將字符串轉(zhuǎn)換為小寫
xgp2 = xgp1.lower()
print(xgp2)
# islower():判斷字符串是否都為小寫
print(xgp2.islower())
# title():將字符串中的單詞轉(zhuǎn)換為標(biāo)題格式,每個(gè)單詞首字母大寫,其余小寫
xgp3 = xgp2.title()
print(xgp3)
# istitle():判斷字符事是不是一個(gè)標(biāo)題
print(xgp3.istitle())
# swapcase():小寫轉(zhuǎn)大寫,大寫轉(zhuǎn)小寫
xgp4 = xgp3.swapcase()
print(xgp4)
xgp5 = xgp4.swapcase()
print(xgp5)
# capitalize():將首字母轉(zhuǎn)換為大寫
xgp6 = xgp5.capitalize()
print(xgp6)
以上實(shí)例輸出結(jié)果:
# 原始輸出
hello,wsd
# 將字符串轉(zhuǎn)換為大寫
HELLO,WSD
# 判斷字符串是否都為大寫
True
# 將字符串轉(zhuǎn)換為小寫
hello,wsd
# 判斷字符串是否都為小寫
True
# 將字符串中的單詞轉(zhuǎn)換為標(biāo)題格式,每個(gè)單詞首字母大寫,其余小寫
Hello,Wsd
# 判斷字符事是不是一個(gè)標(biāo)題
True
# 小寫轉(zhuǎn)大寫,大寫轉(zhuǎn)小寫
hELLO,wSD
Hello,Wsd
# 將首字母轉(zhuǎn)換為大寫
Hello,wsd
三、判斷類方法
1、Python3 isalpha()方法
Python isalpha() 方法檢測(cè)字符串是否只由字母組成。
語(yǔ)法
isalpha()方法語(yǔ)法:
str.isalpha()
參數(shù)
無。
返回值
如果字符串至少有一個(gè)字符并且所有字符都是字母則返回 True,否則返回 False。
實(shí)例
str = "runoob";
print str.isalpha();
str = "runoob小鋼炮";
print str.isalpha();
str = "this is string example....wow!!!";
print str.isalpha();
以上實(shí)例輸出結(jié)果如下:
True
False
False
2、Python3 isalnum()方法
Python isalnum() 方法檢測(cè)字符串是否由字母和數(shù)字組成。
語(yǔ)法
isalnum()方法語(yǔ)法:
str.isalnum()
參數(shù)
無。
返回值
如果 string 至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
實(shí)例
以下實(shí)例展示了isalnum()方法的實(shí)例:
str = "this2009"; # 字符中沒有空格
print str.isalnum();
str = "this is string example....wow!!!";
print str.isalnum();
以上實(shí)例輸出結(jié)果如下:
True
False
3、Python3 isspace()方法
Python isspace() 方法檢測(cè)字符串是否只由空白字符組成。
語(yǔ)法
isspace() 方法語(yǔ)法:
str.isspace()
參數(shù)
無。
返回值
如果字符串中只包含空格/指標(biāo)位/換行符,則返回 True,否則返回 False.
實(shí)例
以下實(shí)例展示了isspace()方法的實(shí)例:
str = " \n \t"
print (str.isspace())
str = "Runoob example....wow!!!"
print (str.isspace())
以上實(shí)例輸出結(jié)果如下:
True
False
4、Python3 isdecimal()方法
Python isdecimal() 方法檢查字符串是否只包含十進(jìn)制字符。這種方法只存在于unicode對(duì)象。
注意:定義一個(gè)十進(jìn)制字符串,只需要在字符串前添加 'u' 前綴即可。
語(yǔ)法
isdecimal()方法語(yǔ)法:
str.isdecimal()
參數(shù)
無
返回值
如果字符串是否只包含十進(jìn)制字符返回True,否則返回False。
實(shí)例
以下實(shí)例展示了 isdecimal()函數(shù)的使用方法:
str = "runoob2016"
print (str.isdecimal())
str = "23443434"
print (str.isdecimal())
以上實(shí)例輸出結(jié)果如下:
False
True
5、Python3 isdigit()方法
Python isdigit() 方法檢測(cè)字符串是否只由數(shù)字組成。
語(yǔ)法
isdigit()方法語(yǔ)法:
str.isdigit()
參數(shù)
無。
返回值
如果字符串只包含數(shù)字則返回 True 否則返回 False。
實(shí)例
以下實(shí)例展示了isdigit()方法的實(shí)例:
str = "123456";
print (str.isdigit())
str = "Runoob example....wow!!!"
print (str.isdigit())
以上實(shí)例輸出結(jié)果如下:
True
False
6、Python3 startswith()方法
startswith() 方法用于檢查字符串是否是以指定子字符串開頭,如果是則返回 True,否則返回 False。如果參數(shù) beg 和 end 指定值,則在指定范圍內(nèi)檢查。
語(yǔ)法
startswith()方法語(yǔ)法:
str.startswith(substr, beg=0,end=len(string));
參數(shù)
str -- 檢測(cè)的字符串。
substr -- 指定的子字符串。
strbeg -- 可選參數(shù)用于設(shè)置字符串檢測(cè)的起始位置。
strend -- 可選參數(shù)用于設(shè)置字符串檢測(cè)的結(jié)束位置。
返回值
如果檢測(cè)到字符串則返回True,否則返回False。
實(shí)例
以下實(shí)例展示了startswith()函數(shù)的使用方法:
str = "this is string example....wow!!!"
print (str.startswith( 'this' )) # 字符串是否以 this 開頭
print (str.startswith( 'string', 8 )) # 從第八個(gè)字符開始的字符串是否以 string 開頭
print (str.startswith( 'this', 2, 4 )) # 從第2個(gè)字符開始到第四個(gè)字符結(jié)束的字符串是否以 this 開頭
以上實(shí)例輸出結(jié)果如下:
True
True
False
7、Python3 endswith()方法
endswith() 方法用于判斷字符串是否以指定后綴結(jié)尾,如果以指定后綴結(jié)尾返回 True,否則返回 False。可選參數(shù) "start" 與 "end" 為檢索字符串的開始與結(jié)束位置。
語(yǔ)法
endswith()方法語(yǔ)法:
str.endswith(suffix[, start[, end]])
參數(shù)
suffix -- 該參數(shù)可以是一個(gè)字符串或者是一個(gè)元素。
start -- 字符串中的開始位置。
end -- 字符中結(jié)束位置。
返回值
如果字符串含有指定的后綴返回 True,否則返回 False。
實(shí)例
以下實(shí)例展示了endswith()方法的實(shí)例:
Str='Runoob example....wow!!!'
suffix='!!'
print (Str.endswith(suffix))
print (Str.endswith(suffix,20))
suffix='run'
print (Str.endswith(suffix))
print (Str.endswith(suffix, 0, 19))
以上實(shí)例輸出結(jié)果如下:
True
True
False
False
四、小練習(xí)
模擬用戶注冊(cè),要求:
1、用戶名不能是純數(shù)字,不能以數(shù)字開頭,必須包含數(shù)字、字母或者下劃線其中兩項(xiàng)。
2、用戶密碼長(zhǎng)度在6-12位之間,不能是純數(shù)字或純字母,必須包含數(shù)字、字母大寫或小寫兩項(xiàng)。
3、符合以上要求,程序提示注冊(cè)成功;否則在輸入內(nèi)容之后立即給出錯(cuò)誤提示。
def user():
while True:
username = input('請(qǐng)輸入要注冊(cè)的賬號(hào)(不能是純數(shù)字,不能以數(shù)字開頭,必須包含數(shù)字、字母或者下劃線其中兩項(xiàng)')
if username == '' :
print('用戶名不能為空')
continue
elif username .isdecimal() or username[0].isdecimal() == True:
print('用戶名首字母不能為數(shù)字或不能為純數(shù)字用戶名' )
continue
elif username.isalpha() == True:
print('必須包含數(shù)字字母下 劃線其中兩項(xiàng)' )
continue
else:
return username
break
def password():
while True:
passwd = input(' 請(qǐng)輸入密碼: ')
if len(passwd) < 6 or len(passwd) > 12:
print( '用戶密碼長(zhǎng)度在6 -12位之間')
continue
elif passwd. isdecimal() or passwd. isalpha():
print('用戶密碼不能是純數(shù)字或純字母,必須包含數(shù)字、字母大寫或小寫兩項(xiàng):')
continue
else:
return passwd
break
def xgp():
user()
password()
print('注冊(cè)成功')
xgp()
以上實(shí)例輸出結(jié)果如下:
請(qǐng)輸入要注冊(cè)的賬號(hào)(不能是純數(shù)字,不能以數(shù)字開頭,必須包含數(shù)字、字母或者下劃線其中兩項(xiàng)f123
請(qǐng)輸入密碼: sdf456!weq.
注冊(cè)成功
五、查找類的方法
str = 'hello,python'
print(str.find('p'))
print(str.index('e'))
print(str.rindex('o'))
print(str.rfind('h'))
以上實(shí)例輸出結(jié)果如下:
6
1
10
9
1、Python3 find()方法
find() 方法檢測(cè)字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),如果指定范圍內(nèi)如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
語(yǔ)法
find()方法語(yǔ)法:
str.find(str, beg=0, end=len(string))
參數(shù)
str -- 指定檢索的字符串
beg -- 開始索引,默認(rèn)為0。
end -- 結(jié)束索引,默認(rèn)為字符串的長(zhǎng)度。
返回值
如果包含子字符串返回開始的索引值,否則返回-1。
實(shí)例
以下實(shí)例展示了find()方法的實(shí)例:
str1 = "Runoob example....wow!!!"
str2 = "exam";
print (str1.find(str2))
print (str1.find(str2, 5))
print (str1.find(str2, 10))
以上實(shí)例輸出結(jié)果如下:
7
7
-1
例子
>>>info = 'abca'
>>> print(info.find('a')) # 從下標(biāo)0開始,查找在字符串里第一個(gè)出現(xiàn)的子串,返回結(jié)果:0
0
>>> print(info.find('a', 1)) # 從下標(biāo)1開始,查找在字符串里第一個(gè)出現(xiàn)的子串:返回結(jié)果3
3
>>> print(info.find('3')) # 查找不到返回-1
-1
2、Python3 index()方法
index() 方法檢測(cè)字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),該方法與 python find()方法一樣,只不過如果str不在 string中會(huì)報(bào)一個(gè)異常。
語(yǔ)法
index()方法語(yǔ)法:
str.index(str, beg=0, end=len(string))
參數(shù)
str -- 指定檢索的字符串
beg -- 開始索引,默認(rèn)為0。
end -- 結(jié)束索引,默認(rèn)為字符串的長(zhǎng)度。
返回值
如果包含子字符串返回開始的索引值,否則拋出異常。
實(shí)例
以下實(shí)例展示了index()方法的實(shí)例:
str1 = "Runoob example....wow!!!"
str2 = "exam";
print (str1.index(str2))
print (str1.index(str2, 5))
print (str1.index(str2, 10))
以上實(shí)例輸出結(jié)果如下(未發(fā)現(xiàn)的會(huì)出現(xiàn)異常信息):
7
7
Traceback (most recent call last):
File "test.py", line 8, in
print (str1.index(str2, 10))
ValueError: substring not found
3、Python3 rfind()方法
Python rfind() 返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項(xiàng)則返回-1。
語(yǔ)法
rfind()方法語(yǔ)法:
str.rfind(str, beg=0 end=len(string))
參數(shù)
str -- 查找的字符串
beg -- 開始查找的位置,默認(rèn)為0
end -- 結(jié)束查找位置,默認(rèn)為字符串的長(zhǎng)度。
返回值
返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項(xiàng)則返回-1。
實(shí)例
以下實(shí)例展示了rfind()函數(shù)的使用方法:
str1 = "this is really a string example....wow!!!"
str2 = "is"
print (str1.rfind(str2))
print (str1.rfind(str2, 0, 10))
print (str1.rfind(str2, 10, 0))
print (str1.find(str2))
print (str1.find(str2, 0, 10))
print (str1.find(str2, 10, 0))
以上實(shí)例輸出結(jié)果如下:
5
5
-1
2
2
-1
4、Python3 rindex()方法
rindex() 返回子字符串 str 在字符串中最后出現(xiàn)的位置,如果沒有匹配的字符串會(huì)報(bào)異常,你可以指定可選參數(shù)[beg:end]設(shè)置查找的區(qū)間。
語(yǔ)法
rindex()方法語(yǔ)法:
str.rindex(str, beg=0 end=len(string))
參數(shù)
str -- 查找的字符串
beg -- 開始查找的位置,默認(rèn)為0
end -- 結(jié)束查找位置,默認(rèn)為字符串的長(zhǎng)度。
返回值
返回子字符串 str 在字符串中最后出現(xiàn)的位置,如果沒有匹配的字符串會(huì)報(bào)異常。
實(shí)例
以下實(shí)例展示了rindex()函數(shù)的使用方法:
str1 = "this is really a string example....wow!!!"
str2 = "is"
print (str1.rindex(str2))
print (str1.rindex(str2,10))
以上實(shí)例輸出結(jié)果如下:
5
Traceback (most recent call last):
File "test.py", line 6, in <module>
print (str1.rindex(str2,10))
ValueError: substring not found
六、小練習(xí)
(1)練習(xí)
驗(yàn)證規(guī)則:
正確格式:abc@163.com.cn
1、郵箱必須包含“@”和“.”
2、“@”在郵箱字符串中不能是第一個(gè)位置
3、“.”右側(cè)至少應(yīng)該有2-3個(gè)字符
4、“.”左側(cè)不能是“@”
def vanzheng():
youxiang = input(' 輸入您的郵箱:')
num = youxiang.index('.')
qiepian = youxiang[num:-1]
if youxiang[0] =='@' or youxiang[0] == '.' :
print('郵箱第一位不能是@或者“.” ')
elif '.' not in youxiang or '@' not in youxiang:
print('郵箱必須包含“@”和“”')
elif len(qiepian) <= 2:
print('“.”右側(cè)至少應(yīng)該有2-3個(gè)字符')
elif youxiang[-1] == '@' or youxiang[-1] == '.':
print('郵箱最后一位不能是@或者.')
else:
print('郵箱正確')
vanzheng()
yx=input('請(qǐng)輸入您的郵箱')
at = yx.find('@' )
dian = yx. find('.')
if (at <= 0 or dian <=0) or yx[-1]== '.' or (dian - at) <=1 :
print('郵箱格式有誤' )
以上實(shí)例輸出結(jié)果如下:
輸入您的郵箱:123@qq.com
郵箱正確
(2)練習(xí)
1、提取passwd文件最后5個(gè)用戶的記錄
2、把每個(gè)用戶的信息按“:”分別提取用戶名、所屬組、家目錄、登錄的shell類型
user_info = '''postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
test-07:x:1000:1000:test-07:/home/test-07:/bin/bash
chou:x:1003:1003::/home/chouchou:/bin/bash
test02:x:1002:1007::/home/test001:/bin/bash
try:x:1004:1004::/home/try:/bin/bash
laoyu:x:1005:1009::/home/laoyu:/bin/bash'''
new_info = user_info.split('\n')
for i in new_info:
print('用戶名:'+i.split(':')[0]+'所屬組:'+i.split(':')[4]+'家目錄:'+i.split(':')[5]+'登錄環(huán)境:'+i.split(':')[6])
以上實(shí)例輸出結(jié)果如下:
用戶名:postfix所屬組:家目錄:/var/spool/postfix登錄環(huán)境:/sbin/nologin
用戶名:tcpdump所屬組:家目錄:/登錄環(huán)境:/sbin/nologin
用戶名:test-07所屬組:test-07家目錄:/home/test-07登錄環(huán)境:/bin/bash
用戶名:chou所屬組:家目錄:/home/chouchou登錄環(huán)境:/bin/bash
用戶名:test02所屬組:家目錄:/home/test001登錄環(huán)境:/bin/bash
用戶名:try所屬組:家目錄:/home/try登錄環(huán)境:/bin/bash
用戶名:laoyu所屬組:家目錄:/home/laoyu登錄環(huán)境:/bin/bash
七、其他方法
1、Python3 split()方法
split() 通過指定分隔符對(duì)字符串進(jìn)行切片,如果第二個(gè)參數(shù) num 有指定值,則分割為 num+1 個(gè)子字符串。
語(yǔ)法
split() 方法語(yǔ)法:
str.split(str="", num=string.count(str))
參數(shù)
str -- 分隔符,默認(rèn)為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
num -- 分割次數(shù)。默認(rèn)為 -1, 即分隔所有。
返回值
返回分割后的字符串列表。
實(shí)例
以下實(shí)例展示了 split() 函數(shù)的使用方法:
str = "this is string example....wow!!!"
print (str.split( )) # 以空格為分隔符
print (str.split('i',1)) # 以 i 為分隔符
print (str.split('w')) # 以 w 為分隔符
(1)以下實(shí)例以 # 號(hào)為分隔符,指定第二個(gè)參數(shù)為 1,返回兩個(gè)參數(shù)列表。
txt = "Google#Runoob#Taobao#Facebook"
# 第二個(gè)參數(shù)為 1,返回兩個(gè)參數(shù)列表
x = txt.split("#", 1)
print(x)
以上實(shí)例輸出結(jié)果如下:
['Google', 'Runoob#Taobao#Facebook']
2、Python3 join()方法
Python join() 方法用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串。
語(yǔ)法
join()方法語(yǔ)法:
str.join(sequence)
參數(shù)
sequence -- 要連接的元素序列。
返回值
返回通過指定字符連接序列中元素后生成的新字符串。
實(shí)例
以下實(shí)例展示了join()的使用方法:
s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))
以上實(shí)例輸出結(jié)果如下:
r-u-n-o-o-b
runoob
3、Python3中 strip lstrip rstrip的使用方法
簡(jiǎn)單來說,三種方法是為了刪除字符串中不同位置的指定字符。其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左邊的字符,rstrip()用于去除右邊的字符
(1)strip()
Python strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格)。
若傳入的是一個(gè)字符數(shù)組,編譯器將去除字符串兩端所有相應(yīng)的字符,直到?jīng)]有匹配的字符。
語(yǔ)法
str.strip([chars])
參數(shù)
chars – 移除字符串頭尾指定的字符。
實(shí)例
1、默認(rèn)方法
string1 = ' Kobe Bryant '
print(string1.strip())
以上實(shí)例輸出結(jié)果如下:
Kobe Bryant
默認(rèn)刪除字符串前后的空格。
2、 參數(shù)傳遞
string2 = 'uuuussssaaaa china aaaassssuuu'
print(string2.strip('usa'))
以上實(shí)例輸出結(jié)果如下:
china
其中, 'u'、's'、'a' 的個(gè)數(shù)可以為任意,不影響最后輸出 > china
(2)lstrip()
Python lstrip() 方法用于截掉字符串左邊的空格或指定字符,默認(rèn)為空格。
實(shí)例
1、默認(rèn)方法
string1 = ' Kobe Bryant '
string1.lstrip()
以上實(shí)例輸出結(jié)果如下:
'Kobe Bryant '
默認(rèn)刪除字符串前的空格。
2、 參數(shù)傳遞
string2 = 'uuuussssaaaa china aaaassssuuu'
print(string2.strip('usa'))
以上實(shí)例輸出結(jié)果如下:
china aaaassssuuu
(3)rstrip()
Python lstrip() 方法用于截掉字符串右邊的空格或指定字符,默認(rèn)為空格。
實(shí)例
1、默認(rèn)方法
string1 = ' Kobe Bryant '
string1.lstrip()
以上實(shí)例輸出結(jié)果如下:
Kobe Bryant'
默認(rèn)刪除字符串后的空格。
2、參數(shù)傳遞
string2 = 'uuuussssaaaa china aaaassssuuu'
print(string2.strip('usa'))
以上實(shí)例輸出結(jié)果如下:
uuuussssaaaa china
4、Python3 replace()方法
描述
replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個(gè)參數(shù)max,則替換不超過 max 次。
語(yǔ)法
replace()方法語(yǔ)法:
str.replace(old, new[, max])
參數(shù)
old -- 將被替換的子字符串。
new -- 新字符串,用于替換old子字符串。
max -- 可選字符串, 替換不超過 max 次
返回值
返回字符串中的 old(舊字符串) 替換成 new(新字符串)后生成的新字符串,如果指定第三個(gè)參數(shù)max,則替換不超過 max 次。
實(shí)例
以下實(shí)例展示了replace()函數(shù)的使用方法:
str = "wsdixgp.top"
print ("xgp舊地址:", str)
print ("xgp新地址:", str.replace("wsdixgp.top", "wsdlxgp.top"))
str = "this is string example....wow!!!"
print (str.replace("is", "was", 3))
以上實(shí)例輸出結(jié)果如下:
xgp舊地址: wsdixgp.top
xgp新地址: wsdlxgp.top
thwas was string example....wow!!!
八、使用Python分析Apache的訪問日志
1、字符串分割
創(chuàng)建access.log文件(存放日志信息即可)
log = '182.19.31.129 - - [16/JAN/2020:06:05:35 +0200] "GET /index.php HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; PJBot/3.0; +http://craw1.pagesjaunes.fr/robot)" "-"'
log_temp = log.split()
print(log_temp)
print('用戶IP:'+log_temp[0])
print('訪問頁(yè)面:'+log_temp[6])
print('狀態(tài)碼:'+log_temp[8])
from __future__ import print_function
ips = []
with open('access.log') as f:
for line in f:
ips.append(line.split()[0])
print('網(wǎng)站請(qǐng)求數(shù)[PV]:'+ str(len(ips)))
print('網(wǎng)站獨(dú)立的訪客數(shù)[UV]:'+ str(len(set(ips))))
以上實(shí)例輸出結(jié)果如下:
網(wǎng)站請(qǐng)求數(shù)[PV]:120
網(wǎng)站獨(dú)立的訪客數(shù)[UV]:6
2、使用counter類統(tǒng)計(jì)PV和UV
from __future__ import print_function
d = {}
with open('access.log') as f:
for line in f:
key = line.split()[8]
d.setdefault(key,0)
d[key] += 1
print(d)
# 出錯(cuò)的頁(yè)面數(shù)量
error_requests = 0
# 頁(yè)面總訪問量
sum_requests = 0
# 遍歷字典
for key, value in d.items():
if int(key) >= 400:
error_requests += value
sum_requests += value
print('頁(yè)面出錯(cuò)率:{0:2f}%'.format(error_requests * 100.0/sum_requests))
以上實(shí)例輸出結(jié)果如下:
{'200': 115, '500': 1, '248': 1, '210': 1, '203': 1, '400': 1}
頁(yè)面出錯(cuò)率:1.666667%
九、格式化
1、Python字符串格式化
Python 支持格式化字符串的輸出 。盡管這樣可能會(huì)用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個(gè)值插入到一個(gè)有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用與 C 中 sprintf 函數(shù)一樣的語(yǔ)法。
print ("我叫 %s 今年 %d 歲!" % ('小名', 10))
以上實(shí)例輸出結(jié)果:
我叫 小名 今年 10 歲!
python字符串格式化符號(hào):
符 號(hào)
描述
%c
格式化字符及其ASCII碼
%s
格式化字符串
%d
格式化整數(shù)
%u
格式化無符號(hào)整型
%o
格式化無符號(hào)八進(jìn)制數(shù)
%x
格式化無符號(hào)十六進(jìn)制數(shù)
%X
格式化無符號(hào)十六進(jìn)制數(shù)(大寫)
%f
格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度
%e
用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%E
作用同%e,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%g
%f和%e的簡(jiǎn)寫
%G
%f 和 %E 的簡(jiǎn)寫
%p
用十六進(jìn)制數(shù)格式化變量的地址
格式化操作符輔助指令:
符號(hào)
功能
*
定義寬度或者小數(shù)點(diǎn)精度
-
用做左對(duì)齊
+
在正數(shù)前面顯示加號(hào)( + )
在正數(shù)前面顯示空格
#
在八進(jìn)制數(shù)前面顯示零('0'),在十六進(jìn)制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
0
顯示的數(shù)字前面填充'0'而不是默認(rèn)的空格
%
'%%'輸出一個(gè)單一的'%'
(var)
映射變量(字典參數(shù))
m.n.
m 是顯示的最小總寬度,n 是小數(shù)點(diǎn)后的位數(shù)(如果可用的話)
Python2.6 開始,新增了一種格式化字符串的函數(shù) str.format(),它增強(qiáng)了字符串格式化的功能。
練習(xí)
rint( '%d' % 3)
print( '%09f' % 3.14)
print('%s' % 'hello')
以上實(shí)例輸出結(jié)果如下:
3
03.140000
hello
2、format函數(shù)
Python2.6 開始,新增了一種格式化字符串的函數(shù) str.format(),它增強(qiáng)了字符串格式化的功能。
基本語(yǔ)法是通過 {} 和 : 來代替以前的 % 。
format 函數(shù)可以接受不限個(gè)參數(shù),位置可以不按順序。
>>>"{} {}".format("hello", "world") # 不設(shè)置指定位置,按默認(rèn)順序
'hello world'
>>> "{0} {1}".format("hello", "world") # 設(shè)置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 設(shè)置指定位置
'world hello world'
也可以設(shè)置參數(shù):
print("網(wǎng)站名:{name}, 地址 {url}".format(name="xgp", url="wsdlxgp.top"))
# 通過字典設(shè)置參數(shù)
site = {"name": "xgp", "url": "wsdlxgp.top"}
print("網(wǎng)站名:{name}, 地址 {url}".format(**site))
# 通過列表索引設(shè)置參數(shù)
my_list = ['xgp', 'wsdlxgp.top']
print("網(wǎng)站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必須的
以上實(shí)例輸出結(jié)果如下:
網(wǎng)站名:xgp, 地址 wsdlxgp.top
網(wǎng)站名:xgp, 地址 wsdlxgp.top
網(wǎng)站名:xgp, 地址 wsdlxgp.top
也可以向 str.format() 傳入對(duì)象:
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 為: {0.value}'.format(my_value)) # "0" 是可選的
以上實(shí)例輸出結(jié)果如下:
value 為: 6
3、數(shù)字格式化
下表展示了 str.format() 格式化數(shù)字的多種方法:
數(shù)字
格式
輸出
描述
3.1415926
{:.2f}
3.14
保留小數(shù)點(diǎn)后兩位
3.1415926
{:+.2f}
+3.14
帶符號(hào)保留小數(shù)點(diǎn)后兩位
-1
{:+.2f}
-1.00
帶符號(hào)保留小數(shù)點(diǎn)后兩位
2.71828
{:.0f}
3
不帶小數(shù)
5
{:0>2d}
05
數(shù)字補(bǔ)零 (填充左邊, 寬度為2)
5
{:x<4d}
5xxx
數(shù)字補(bǔ)x (填充右邊, 寬度為4)
10
{:x<4d}
10xx
數(shù)字補(bǔ)x (填充右邊, 寬度為4)
1000000
{:,}
1,000,000
以逗號(hào)分隔的數(shù)字格式
0.25
{:.2%}
25.00%
百分比格式
1000000000
{:.2e}
1.00e+09
指數(shù)記法
13
{:>10d}
13
右對(duì)齊 (默認(rèn), 寬度為10)
13
{:<10d}
13
左對(duì)齊 (寬度為10)
13
{:^10d}
13
中間對(duì)齊 (寬度為10)
11
'{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11)
1011 11 13 b 0xb 0XB
^, <, > 分別是居中、左對(duì)齊、右對(duì)齊,后面帶寬度, : 號(hào)后面帶填充的字符,只能是一個(gè)字符,不指定則默認(rèn)是用空格填充。
+ 表示在正數(shù)前顯示 +,負(fù)數(shù)前顯示 -; (空格)表示在正數(shù)前加空格
b、d、o、x 分別是二進(jìn)制、十進(jìn)制、八進(jìn)制、十六進(jìn)制。
# 精度
print('{: .2f}'.format(3.141592656535897))
# 符號(hào)
print('{: .2f}'.format(3.141592656535897))
# 寬度
print( '{:10.2f}'.format(3.141592656535897))
# 對(duì)齊方式
print('{:^10.2f}'.format(3.141592656535897))
# 逗號(hào)分隔
print('{:,}'.format(23421424231))
以上實(shí)例輸出結(jié)果如下:
3.14
3.14
3.14
3.14
23,421,424,231
此外我們可以使用大括號(hào) {} 來轉(zhuǎn)義大括號(hào),如下實(shí)例:
print ("{} 對(duì)應(yīng)的位置是 {{0}}".format("runoob"))
以上實(shí)例輸出結(jié)果如下:
runoob 對(duì)應(yīng)的位置是 {0}
總結(jié)
以上是生活随笔為你收集整理的python中find函数忽略大小写_python字符串(大小写、判断、查找、分割、拼接、裁剪、替换、格式化)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python映射类型是什么意思_Pyth
- 下一篇: python接口自动化测试书籍_skPy