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