python數據類型:int、str及其方法


1.判斷某個東西是否在某個東西里包含:in和not in。結果實際上是布爾值(true或false)

 eg:name = "王思騏"
"王思騏" 字符串里面有三個字符,其中思騏稱為子字符串/子序列
整體注釋:ctrl + ?

name = "王思騏"
 if "思騏" in name:
     print('OK')
 else:
     print('Error')

執行結果為OK

name = "王思騏"
 if "王騏" in name:
     print('OK')
 else:
     print('Error')

執行結果為Error。字符串中的字符必須相臨才可以稱為子序列,包含在其中

 2.運算符

結果是值:
  算數運算:a = 10 * 10
  賦值運算:a += 1(等同於a = a + 1);a *= 1(等同於a = a * 1);a //=1(等同於a = a // 1)

結果是布爾值:
  比較運算:a = 1 > 5
  邏輯運算:a = 1>6 or 1==1
  成員運算:a = "騏" in "王思騏"

結果是布爾值的運算規則:從前到后依次計算,有括號先算括號里的內容

執行結果:True or ==>真;True and ==>繼續判斷;False and ==>假;False or ==>繼續判斷

3.數字類型的功能:int ,所有的功能都放在int里

(1)將字符串轉換為數字- int

a = "123"
print(type(a),a) 
b = int(a)
print(type(b),b)

其中,type(a)顯示數據類型

num = "0011" 
v = int(num, base=16) 
print(v)

其中,base=16表示按照16進制將字符串轉換成10進制的數字,默認是按10進制進行轉換

 (2)當前數字的二進制,至少用n位表示- bit_lenght

a=5
r = age.bit_length()
print(r)

4.字符串:str
(1)首字母大寫

test = "aLex"
v = test.capitalize()
print(v)

(2)所有變小寫,其中casefold更牛逼,很多未知的對相應變小寫

test = "aLex"
v1 = test.casefold()
print(v1)
v2 = test.lower()
print(v2)

(3)設置寬度,並將內容居中

test = "aLex"
v = test.center(20,*)
print(v)

其中,20 代指總長度;*是 空白位置填充,一個字符,可有可無

(4)去字符串中尋找,尋找子序列的出現次數

test = "aLexalexr"
v = test.count('ex')
print(v)
test = "aLexalexr"
v = test.count('ex',5,6) 
print(v)

其中,5,6是指從第五位開始,第六位結束

(5)判斷以什么什么結尾,判斷以什么什么開始,輸出結果均為true或false

test = "alex"
v = test.endswith('ex')
v = test.startswith('ex')
print(v)

(6)從開始往后找,找到第一個之后,獲取其位置,是從0開始數位置的

test = "alexalex"
v = test.find('ex')
print(v)

設定尋找的位置參數時,尋找的范圍是左閉右開,例如v = test.find('ex',5,8)第五位找到第7位;未找到時間顯示 -1

test = "alexalex"
v = test.index('8')
print(v)

 index找不到,報錯==》忽略掉,不好用

(7)格式化,將一個字符串中的占位符替換為指定的值

test = 'i am {name}, age {a}'
print(test)
v = test.format(name='alex',a=19)
print(v)
test = 'i am {0}, age {1}'
print(test)
v = test.format('alex',19)
print(v)

當占位符是數字時可直接按順序替換

(8)格式化,傳入的值 {"name": 'alex', "a": 19}

test = 'i am {name}, age {a}'
v1 = test.format(name='df',a=10)
v2 = test.format_map({"name":'alex', "a":19})

使用format_map替換時需要注意傳入的格式

(9) 判斷字符串中是否只包含字母和數字

test = "123"
v = test.isalnum()
print(v)

 (10)制表符

test = "username\temail\tpassword\nwangqiang1\tying@q.com\t123\nwangqiang2\tying@q.com\t123\nwangqiang3\tying@q.com\t123"
v = test.expandtabs(20)
print(v)

expandtabs表示斷句,20字符為一組,\t將前面未滿一組的自動填充到20個字符。\n表示換行

(11)是否是字母,漢字

test = "as2df"
v = test.isalpha()
print(v)

(12)當前輸入是否是數字

test = "" 
v1 = test.isdecimal()
v2 = test.isdigit()
v3 = test.isnumeric()
print(v1,v2,v3)

其中,test = "二"或者1或②

isdecimal()最常用的;isdigit()可以識別②這種數字;test.isnumeric()可以識別②、二這種數字即所有數字

(13)是否存在不可顯示的字符

test = "oiuas\tdfkj"
v = test.isprintable()
print(v)

\t 制表符;\n 換行
(14)判斷是否全部是空格

test = ""
v = test.isspace()
print(v)

(15)判斷是否是標題

test = "Return True if all cased characters in S are uppercase and there is"
v1 = test.istitle()
print(v1)
v2 = test.title()
print(v2)
v3 = v2.istitle()
print(v3)

istitle()判斷是否是標題(標題單詞的首字母均是大寫);title()將內容轉換成標題,即每個單詞的首字母都換成大寫

(16)將字符串中的每一個元素按照指定分隔符進行拼接

test = "你是風兒我是沙"
print(test)
v = "_".join(test)
print(v)

(17)判斷是否全部是大小寫 和 轉換為大小寫

test = "Alex"
v1 = test.islower()
v2 = test.lower()
print(v1, v2)
v1 = test.isupper()
v2 = test.upper()
print(v1,v2)

isupper()、islower()判斷是否全是小寫、大寫;upper()、lower()將內容全部轉換成大寫、小寫

(18)移除指定字符串

test = "ssddxadsddvdvxavfdgfg"
v1 = test.lstrip('xa')
v2 = test.rstrip('9lexxexa')
v 3= test.strip('xa')
print(v1,v2,v3)

匹配字符串時,有限最多匹配。lstrip()匹配左面移除;rstrip()匹配右面移除;strip()匹配所有移除

同時,還可以移除空白test.lstrip();test.rstrip();test.strip()。當出現\t和\n時也會直接移除

(19)對應關系替換

test = "aeiou"
test1 = "12345"
v = "asidufkasd;fiuadkf;adfkjalsdjf"
m = str.maketrans("aeiou", "12345")
new_v = v.translate(m)
print(new_v)

aeiou與12345一一對應

(20)分割為三部分

test = "testasdsddfg"
v = test.partition('s')
print(v)

以第一個s為分割位;rpartition()是從右面尋找第一個s為分割位,顯示分割位

(21) 分割為指定個數

test = "testasdsddfg"
v = test.split('s',2)
print(v)

以前兩個s為分割位;test.rsplit('s',2)從右面尋找前兩個s為分割位,且不顯示分割位

(22) 分割,只能根據換行符分割。true,false:是否保留換行符

test = "asdfadfasdf\nasdfasdf\nadfasdf"
v = test.splitlines(False)
print(v)

(23) 判斷字符串是否以xx開頭/結尾

test = "backend 1.1.1.1"
v = test.startswith('a')
print(v)

startswith('a')判斷字符串是否以a開頭;endswith('a')判斷字符串是否以a結尾

(24)大小寫相互轉換

test = "aLex"
v = test.swapcase()
print(v)

(25) 判斷是否是標識符(字母,數字,下划線 )

a = "def"
v = a.isidentifier()
print(v)

(26) 將指定字符串替換為指定字符串

test = "alexalexalex"
v1= test.replace("ex",'bbb')
print(v1)
v2= test.replace("ex",'bbb',2)
print(v2)

輸出結果為:albbbalbbbalbbb;albbbalbbbalex即2表示"ex"只替換前兩次

5.str類型里比較重要的功能有:

(1) join # '_'.join("asdfasdf"):將字符串中的每一個元素按照指定分隔符進行拼接

test = "你是風兒我是沙"
v = "_".join(test)
print(v)

輸出結果為:你_是_風_兒_我_是_沙

v = '_'.join("asdfasdf")
print(v)

輸出結果為:a_s_d_f_a_s_d_f

(2) split:按照指定分割位進行分割

test = "testasdsddfg"
v = test.split('s',2)
print(v)

輸出結果為:['te', 'ta', 'dsddfg']

以前兩個s為分割位;test.rsplit('s',2)從右面尋找前兩個s為分割位,且不顯示分割位
(3) find:從開始往后找,找到第一個之后,獲取其位置

test = "alexalex"
v = test.find('ex')
print(v)

輸出結果為:2

從開始往后找,找到第一個之后,獲取其位置,是從0開始數位置的
(4) strip:移除指定字符串

test = " ssddx "
v1 = test.lstrip()
v2 = test.rstrip()
v3= test.strip()
print(v1)
print(v2)
print(v3)

輸出結果為:

ssddx                            #去掉左邊空格,右邊仍有
 ssddx                          #去掉右邊空格,左邊仍有
ssddx                           #去掉兩邊空格

strip還可以去除\t、\n。同時也可以去除指定字符串

test = "xaexlex"
v1 = test.lstrip('xa')
v2 = test.rstrip('9lexxex')
v3= test.strip('ex')
print(v1)
print(v2)
print(v3)

輸出結果為:exlex;   xa;     aexl

匹配字符串時,有限最多匹配。lstrip()匹配左面移除;rstrip()匹配右面移除;strip()匹配所有移除

(5) upper:判斷是否全是大寫;全部轉換成大寫

test = "Alex"
v1 = test.isupper()
v2 = test.upper()
print(v1,v2)

輸出結果為:False ALEX
(6) lower:判斷是否全是小寫;全部轉換成小寫

test = "Alex"
v1 = test.islower()
v2 = test.lower()
print(v1, v2)

輸出結果為:False alex

(7) replace:將指定字符串替換為指定字符串

test = "alexalexalex"
v1= test.replace("ex",'bbb')
print(v1)
v2= test.replace("ex",'bbb',2)
print(v2)

輸出結果為:albbbalbbbalbbb;albbbalbbbalex(2表示"ex"只替換前兩次)

(8)索引,獲取字符串中的某一個字符

test="alex"
v = test[3]
print(v)

輸出結果為:x(從0開始計數)

(9)切片,獲取字符串中索引范圍的字符

test="alex"
v = test[0:3]
print(v)

輸出結果為:ale(0=<索引范圍<3)。若索引范圍出現-1表示最后一位

(10)獲取當前字符串由幾個字符組成

test=“王強”
v=len(test) print(v)

輸出結果為:2(用python2運行輸出的結果為6,表示由6個字節組成)

(11)for循環,將字符串中的字符一個一個輸出

test = "泰勒是管理學之父"
index = 0
while index < len(test):
    v = test[index]
    print(v)
    index += 1
print('=======')

輸出結果等同於下面的命令:

test = "泰勒是管理學之父"
for wq in test:
print(wq)

格式:for 變量名 in 字符串:
     print(變量名)
break;continue同樣適用

test = "泰勒是管理學之父"
for item in test:
    continue
print(item)

輸出結果為:父

test = "泰勒是管理學之父"
for item in test:
    print(item)
    break

輸出結果為:泰

(12)獲取連續或不連續的數字,通過設置步長來指定不連續

v = range(0, 20, 5)
for item in v:
    print(item)

輸出結果為:

0
5
10
15

r1 = range(10)
r2 = range(1,10)
r3 = range(1,10,2)
for a in r1:
    print(a)
for b in r2:
    print(b)
for c in r3:
    print(c)

r1輸出為:0,1,2,3,4,5,6,7,8,9(相當於0=<r1<10)

r2輸出為:1,2,3,4,5,6,7,8,9

r3輸出為:1,3,5,7,9(步長為2,依次累加2)

(13)格式化,將一個字符串中的占位符替換為指定的值

test = 'i am {name}, age {a}'
print(test)
v = test.format(name='alex',a=19) print(v)

輸出結果為:

i am {name}, age {a}
i am alex, age 19

6.數字類型里的深度功能

 字符串一旦創建,不可修改;一旦修改或者拼接,都會造成重新生成字符串

7.在所有的數據類型都可以用的功能:

len("asdf")
for循環
索引
切片

8.練習題:根據用戶輸入的值,輸出每一個字符以及當前字符所在的索引位置

test = input(">>>")
print(test)
l = len(test)
print(l)
r = range(0,l)
for item in r:
    print(item, test[item]) 

此段代碼縮寫為:

test = input(">>>")
for item in range(0, len(test)):
    print(item, test[item])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM