python的str()字符串類型的方法詳解


字符串一旦創建,不可修改,一旦修改或者拼接,都會造成重新生成字符串,因為內存存數據是一個挨着一個存的,如果增加一個字符串的話,之前的老位置只有一個地方,不夠,這是原理性的東西,在其他語言里面也一樣

7個必須要背會的方法

join

split

find

strip

upper

lower

replace

4個必須會的灰魔法

len

for循環

索引

切片

 1.字符串  str   所有的功能都放在 str里面了

 n1 = "frank"  n2 = 'root'  n3 = """eric"""   n4 = '''tony'''

      雙引號 單引號 三個雙引號  三個單引號 引起來的都是字符串

             字符串的加法

>>> n1 = "frank"

>>> n2 = "sb"

>>> n3 = "db"

>>> n4 = n1 + n2 + n3

>>> print (n4)

franksbdb

>>>

           字符串的乘法

>>> n1 = "frank"

>>> n3 = n1 * 6

>>> print (n3)

frankfrankfrankfrankfrankfrank

 

字符串類型的魔法,有太多種了,下面列舉幾個常用的

1.capitalize()   魔法是首字母大寫 [ˈkæpɪtəlaɪz] 用大寫字母寫
name = "gouguoqi"
v = name.capitalize()
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

Gouguoqi

 

2.casefold()  

3.lower()  這2個魔法都是把字符串中的大寫字母變成小寫

casefold 最牛逼,它可以把未知的字符串的的對應關系也能變小寫,lower只能我們常用的英文變小寫

upper 使字符串全部變成大寫

name = "GOGUoQi"
v1 = name.casefold()
print (v1)
v2 = name.lower()
print (v2)

C:\python35\python3.exe D:/pyproject/day10/1.py

goguoqi

goguoqi

 

4.center(self, width, fillchar=None) 
   跟ljust (左對齊)  rjust(右對齊)相對應

self 這個可以忽略,width,這種后面必須要帶一個值,就相當於買東西必須要帶錢,fillchar=None表示默認是None    sub代表子序列

#center功能是將字符串居中顯示
#20 代表寬度,- 代表的是空余的地方用什么填充,只能是一個字符,默認是空格

name = "gouguoqi"
v = name.center(20,"-")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

------gouguoqi------

 

5.count(self, sub, start=None, end=None)  [kaʊnt] 計數

計算一個指定的字符出現了幾次,可以是多個字符

sub代表子序列

專業說法:在字符串中尋找子序列出現的次數,可以指定從第幾個字符串開始,第幾個字符串結束的范圍,0為第一個字符 比如 1,4  表示的是從 第二個字符到第第五個字符之間的范圍,第五個字符不算

name = "gouguoqi"
v = name.count("u")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

2

 

name = "gouguoqigougoqi"
v = name.count("go")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

3

 

 

從第3個位置到第5個位置中u這個字符出現了幾次,不算第五個位置,因為是個區間

黃色為區間范圍內

name = "tyuiop"
v = name.count("u",2,4)
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

1

 

 

6.encode

7.decode  

 

8.endswith(self, suffix, start=None, end=None)

以什么結尾,判斷結果是否為真或者假

name = "beiye"
v = name.endswith("e")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

True

 

 

從1到3的范圍內,以i結尾,為真

0為第一個字符,因為是區間的概念,所以第四個字符不算,就是第四個字符往左的

name = "beiye"
v = name.endswith("i",1,3)
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

True

 

9.starswith(self, suffix, start=None, end=None)

以什么字符串開頭  判斷結果是否為真或者假

name = "beiye"
v = name.startswith("b")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

True

 

0為第一個字符,在第二個字符和第四個字符這個范圍,是i開頭,返回正確

name = "beiye"
v = name.startswith("i",2,4)
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

True

 

 

10.find(self, sub, start=None, end=None) *****重要

還有一個index的方法,不過這個找不到的話程序直接崩潰了,所以肯定是不用的,find找不到是返回-1

從開始往后找,找到第一個字符之后,獲取其位置就不往后找了

name = "beiyebeiyet"
v = name.find("t")
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

10

 

在2到6的區間內找t這個子序列,因為找不到所以返回   -1

name = "beiyebeiyet"
v = name.find("t",2,6)
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

-1
11.format(self, *args, **kwargs)  [ˈfɔ:mæt]  格式*****重要

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

test = "i am {name},age {a}"
print (test)
v = test.format(name='gouguoqi',a='28')
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

i am {name},age {a}

i am gouguoqi,age 28

用字典的方式傳進去,前面得加**才行

test = "i am {name},age {a}"
print (test)
v = test.format(**{"name":"gouguoqi","a":28})
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py

i am {name},age {a}

i am gouguoqi,age 28

如果中括號里面什么都不寫,寫{0} {1} {2},代表第一個占位符,第二個占位符,第三個占位符

下面就不用再寫name=啥了。直接寫值就行了,寫3個值,就對應上面3個占位符,依次從左向右

test = "i am {0} age {1} weight {2}"
print (test)
v = test.format('gouguoqi','28','90kg')
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

i am {0} age {1} weight {2}

i am gouguoqi age 28 weight 90kg

 

test = "猥瑣的{0},最喜歡在{1}地方干{2}"
name = input("請輸入你的名字: ")
place = input("請輸入你經常去的地方: ")
like = input("請輸入你平時的愛好: ")
v = test.format(name,place,like)
print(v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

請輸入你的名字: 修電腦

請輸入你經常去的地方: 網吧

請輸入你平時的愛好: 擼管

猥瑣的修電腦,最喜歡在網吧地方干擼管
12.format_map(self, mapping)

format_map也是格式化,傳入的值必須是這樣的格式{ "name": 'gouguqi',"a": 28 }

這個格式就是一個字典格式

test = "i am {name} age {a}"
print (test)
v = test.format_map({ "name": 'gouguqi',"a": 28 })
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

i am {name} age {a}

i am gouguqi age 28

(學了后面才發現,這里的參數就是字典類型)

(v = test.format(**{"name":"gouguoqi","a":28}))而上面的format用字典的方式得加**

13.isalnum(self)

判斷字符串中只能由字母和數字,不能有特殊符號

test = "4567ghjkk_!"
v = test.isalnum()
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

False

test = "4567ghjkkKP"
v = test.isalnum()
print (v)

C:\python35\python3.exe D:/pyproject/day10/1.py

True
14.isalpha(self)

Return True if all characters in S are alphabetic(字母)
and there is at least one character(至少一個字母) in S, False otherwise.

翻譯結果:字符串里面都是字母,並且至少是一個字母,結果就為真,(漢字也可以)其他情況為假

S = "2"
v = S.isalpha()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False 
S = "IIKk9123mm"
v = S.isalpha()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
S = "IIKkkkkkmnbvgghjj"
v = S.isalpha()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

 
S = "IIKkkkkkmn漢字ghjj"
v = S.isalpha()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True
15.isdecimal(self)  [ˈdesɪml] 十進制的
判斷當前字符串是否為數字

Return True if there are only decimal characters (十進制字符) in S,
False otherwise.

S = "65434334000000000"
v = S.isdecimal()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True
S = "66k"
v = S.isdecimal()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
16.isdigit(self)  [ˈdɪdʒɪt] 數字的
判斷字符串是否是數字,特殊的數字也可以
這個比isdecimal更牛逼些,一些特殊的數字也返回True

Return True if all characters in S are digits(數字)
and there is at least one character in S, False otherwise.

S = "66①56"
v1 = S.isdecimal()
v2 = S.isdigit()
print (v1,v2)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False True
17.isnumeric(self)  [nju:'merɪk]  數字的

判斷如果是數字的數值的就返回為真,比isdigit isdecimal 更牛逼,這個也能識別特殊的數值,也能識別中,isdigit能識別特殊的值但是不支持中文 ,isdecimal只能是十進制的,特殊的不行

以后工作中常用的就是isdecimal,因為這就是判斷十進制數字的,特殊的值和中文並不能做運算,所以不常用

Return True if there are only numeric(數字的,數值的) characters in S,
False otherwise

S = "66①56"
v1 = S.isdecimal()
v2 = S.isdigit()
v3 = S.isnumeric()
print (v1,v2,v3)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False True True
S = ""
v1 = S.isdecimal()
v2 = S.isdigit()
v3 = S.isnumeric()
print (v1,v2,v3)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False False True
18.isprintable(self)  [ˈprɪntəbl] 可打印的

如果我們能看到真實的可以打印出來的東西就是True

像\t  \n這種我們肉眼不可顯示的東西是打印不出來的,所以在包含這些的時候就是false

Return True if all characters in S are considered
printable in repr() or S is empty, False otherwis

S = " 556546  ___  二&*、"
v = S.isprintable()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True
S = " 556546sd\tf"
v = S.isprintable()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False

S = " 55\n6546sdf"
v = S.isprintable()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
19.isspace(self) 
判斷你的字符是否全部是空格,一個空格也行,多個空格也行,如果全部是空格就為真,不全部是空格就是假,什么都不寫也為假

Return True if all characters in S are whitespace
and there is at least one character in S, False otherwise

一個空格

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

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

多個空格為真

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

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True
什么都不寫為假

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

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
20.istitle (self)   [ˈtaɪtl]  標題
判斷知否是標題(標題是每個字符串的首字母大寫)
S = "follow uncased characters and lowercase characters only cased on"
v1 = S.istitle()
print (v1)
v2 = S.title()  這個方法是把字符串中的首字母變為大寫,也就是轉換成標題
print (v2)
v3 = v2.istitle()
print (v3)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False   判斷v1  結果是v1 不是標題

Follow Uncased Characters And Lowercase Characters Only Cased On把v1轉化成標題

True   再次判斷v3,結果是標題了

21.title(self)

這個方法是可以把字符串的首字母變成大寫,也就是變成標題

 

S = "my name is  gouguoqi"
v = S.title()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

My Name Is  Gouguoqi

 

22.isupper(self)     uppercase ['ʌpəˌkeɪs] 大寫字母
判斷全部是大寫字母才是真,至少有一個字符,否則為假

Return True if all cased characters in S are uppercase  and there is
at least one cased character in S, False otherwise

S = "GOUGUOQI"
v = S.isupper()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

 

其中有一個字符為小寫,結果就是false了

S = "GOUgUOQI"
v = S.isupper()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
23.islower(self)   lowercase  小寫字母
判斷全部是小寫字母才是真,至少有一個字符,否則為假

Return True if all cased characters in S are lowercase and there is
at least one cased character in S, False otherwise

S = "woaini"
v = S.islower()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

也可以包含特殊符號和數字

S = "woaini*&^%$#@!998"
v = S.islower()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

就是不能有大寫字母,有大寫字母就為假

S = "woaini*&^%$#@!998Y"
v = S.islower()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False
24.join(self, iterable)*****非常重要的方法

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

Return a string which is the concatenation of the strings in the
iterable.  The separator between elements is S

separato    [ˈsepəreɪtə(r)]  分隔符

S = "我愛學習"
v = " ".join(S)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

我 愛 學 習
S = "我愛學習"
v = "_".join(S)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

我_愛_學_習
25.ljust(self, width, fillchar=None) left 左對齊

給字符串一個寬度,使字符串左對齊,右邊用指定的字符填滿,默認是空格

Return S left-justified in a Unicode string of length width. Padding is
done using the specified fill  (使什么填滿)character (default is a space).

 

S = "woaini"
v = S.ljust(20)
print (v

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

woaini          

用*來填充空白處

S = "woaini"
v = S.ljust(20,'*')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

woaini**************

26.rjust   right 右對齊

S = "woaini"
v = S.rjust(20)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

              woaini

用*來填充空白處

S = "woaini"
v = S.rjust(20,'*')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

**************woaini

27.lower

使字符串變成小寫

S = "GouGuoQi"
v = S.lower()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gouguoqi

28.upper使字符串變成大寫

S = "gouguoqi"
v = S.upper()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

GOUGUOQI
29. lstrip   去除字符左邊的空格(包括\t \n),還可以去除指定的字符串
移除指定字符的時候,按照字符最多匹配
也叫按照最長公共子序列匹配,什么是最長公共子序列
beiye
woaiye          iye就是最長公共子序列

Return a copy of the string S with leading whitespace removed.
If chars is given and not None, remove characters in chars instead.

given  指定的
S = "  gouguoqi  "
v = S.lstrip()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gouguoqi 

去除左邊的g

S = "gouguoqi  "
v = S.lstrip('g')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

ouguoqi
30.rstrip  去除字符串右邊的空格 (包括\t \n)還可以去除指定的字符串
S = "  gouguoqi  "
v = S.rstrip()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

  gouguoqi

去除右邊的qi

S = "gouguoqi"
v = S.rstrip('qi')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gouguo
31.strip    *****重要
去除字符串左右兩邊的空格(包括\t \n)還可以去除指定的字符串
S = "  goug  uoqi  "
v = S.strip()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

goug  uoqi

去除開頭和結尾

S = "gouguoqi"
v = S.strip('goi')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

uguoq
32.maketrans(self, *args, **kwargs)
33.translate(self, table)

32和33是一起用的,首先得創建一個對應關系

S1和S的字符是一一對應的

v是定義了一個字符串的變量

m是創建了一個對應關系

n是v這個變量用translate的這個方法,以對應關系是("aeiou","12345")進行替換

意思是字符串中的a會用1替換,e會用2替換,i會用3替換,o用4替換,u用5替換

# S = "aeiou"
# S1 = "12345"
v = "asdfifkjsedfkom,s.u.sdfasdfa"
m = str.maketrans("aeiou","12345")
n = v.translate(m)
print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

1sdf3fkjs2dfk4m,s.5.sdf1sdf1
34. partition(self, sep)  [pɑ:ˈtɪʃn] 分割,分開 *****(會用到)

用指定的字符分割,找到第一個指定的分割字符之后就不再繼續找了,直接把字符串分成3部分,第二部分是分割字符本身,剩下的就是一組,開頭是一組,這個方法只能把字符串分割成3份

S = "tesdfsffgbnhjjsghj"
v = S.partition('s')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

('te', 's', 'dfsffgbnhjjsghj')
35. rpartition  從字符串右邊開始以指定的字符分割符進行分割
也是只能分割成3份
S = "tesdfsffgbnhjjsghj"
# v = S.partition('s')
# print (v)
v1 = S.rpartition('s')
print (v1)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

('tesdfsffgbnhjj', 's', 'ghj')

36.split      [splɪt]  分裂 分開   *****重要

不加參數默認是以指定的分割字符分割成n份,但是不顯示分割字符

S = "tesdfsffgbnhjjsghj"
v2 = S.split('s')
print (v2)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

['te', 'df', 'ffgbnhjj', 'ghj']

加了一個參數2,代表以s這個字符為分隔符,進行分割2次操作,后面就不分割了

如果是3的話,就是分割3次,后面就不分割了

S = "tesdfsffgbnhjjsghj"
v2 = S.split('s',2)
print (v2)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

['te', 'df', 'ffgbnhjjsghj']

37. rsplit    從字符串右邊開始,以指定的分割字符串進行分割,不加參數默認是以指定的分割字符分割成n份,但是不顯示分割字符,跟split用法一致,只不過這個是從右邊開始

S = "tesdfsffgbnhjjsghj"
v3 = S.rsplit('s',2)
print (v3)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

['tesdf', 'ffgbnhjj', 'ghj']

正則表達式也可以進行分割,可以自己設置是否想要顯示分割字符,自己來定的

正則表達式是partiton和split的這2個方法的功能合集

比如要計算一大堆運算的結果

9*7/5+9-9/3*1

先拿2個做例子吧

9*7

如果我用partition這個方法進行分割,得到的結果是

9 * 7

如果我用split這個方法進行分割,得到的結果是

9  7

38. splitlines   以換行為分割符進行分割,默認參數是False,True參數代表保留換行符

Return a list of the lines in S, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends
is given and true

 

S = "sdfggh\nqe\nedd"
v = S.splitlines()
print (v,)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

['sdfggh', 'qe', 'edd']
S = "sdfggh\nqe\nedd"
v = S.splitlines(True)
print (v,)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

['sdfggh\n', 'qe\n', 'edd']
39. swapcase(self)

把大寫變小寫,把小寫變大寫

Return a copy of S with uppercase(大寫) characters converted to lowercase(小寫)
and vice versa

S = "GOUguoQI"
v = S.swapcase()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gouGUOqi
40. replace(self, old, new, count=None)  替換 *****重要
S = "gouguoqi"
v = S.replace('o','n')
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gnugunqi

后面加參數1,表示替換1個,2,表示只替換2個,3,表示只替換3個

S = "gouguoqi"
v = S.replace('o','n',1)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

gnuguoqi

#######################################灰魔法--開始#############################

1.索引,下標,獲取字符串中的某一個字符,0為第一個字符串

S = "beiy"
v = S[0]
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

b

2.獲取一個范圍內的字符串叫:切片

S = "beiy"
v = S[0:2]    這個范圍是大於等於0小於2
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

be
S = "beiy"
v = S[0:-1]          -1代表字符串的結尾
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

bei

3.len   獲取字符串由幾個字符組成

S = "beiye"
v = len(S)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

5

在python2.7里面中文拿到的結果就不是下面的3了

S = "苗經理"
v = len(S)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

3

如果想讓字符串一個一個的輸出該怎么寫,用我們之前學過的就是可以用while來寫

test = "北爺沖我來"
index = 0
while index < len(test):
    v = test[index]
    print (v)
    index+=1
print ('####end####')

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

北

爺

沖

我

來

####end#### 

4.for循環就更簡單了

test = "北爺沖我來"
for n in (test):
    print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

北

爺

沖

我

來

break結束當前循環

test = "北爺沖我來"
for n in (test):
    print (n)
    break

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

北

continue 滿足條件后不繼續往下,回到for開始繼續循環,然后又滿足條件了,又回去繼續循環,所以print  n 永遠打印不出來,直到循環結束也不會執行continue下面的print,也就是終止當前循環,開始下一次循環

test = "北爺沖我來"
for
n in (test):
    continue
   
print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

 

5.range  創建連續的數字,也可以通過指定步長創建不連續的數字

 

在python2.7里面,range可以直接幫我們打印出來范圍內的數字,這個就有缺點了,比如我打印出來1萬個數字,它得先把一萬個數字打印出來,這個時候我們得等着了。並且占用很多內存

在python2.7中有一個xrange跟python中的range效果是一樣的,python3中,直接就保留了range這一種了,相當於優化升級了

 

在python3里面,range創建之后,並不會把這些數字打印出來,而是在什么時候調用的時候才去一個一個的打印,比如我for循環調用的時候才會挨個打印,這樣就省內存了

v = range(10)
print (v)
for n in (v):
    print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

range(0, 10)

0

1

2

3

4

5

6

7

8

9

range的范圍是大於等於左邊的數字,小於右邊的數字,后面可以加參數指定“步長”,步長就是幾個位置算一步(是一組),下面的10,31就是指的大於等於10,小於31的里面的數字,5就是步長

v = range(10,31,5)
print (v)
for n in (v):
    print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

range(10, 31, 5)

10

15

20

25

30

 

把數字按照倒敘排列

S = range(10,0,-1)
for n in S:
    print (n)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

10

9

8

7

6

5

4

3

2

1

練習:讓用戶輸入一堆字符串,我們最終打印出來每個字符串的下標和源每個字符串

S = input('>>>>')
n = len(S)    獲取字符串的長度
m = range(n)  
for item in m:
     print (item,S[item])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

>>>>asd

0 a

1 s

2 d

我們在簡化一下就是

S = input('>>>>')
for item in range(len(S)):
     print (item,S[item])

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

>>>>ert

0 e

1 r

2 t

第二種寫法

a = input("請輸入>>>>")
c = 0
for n in a:
    print (c,n)
    c+=1

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

請輸入>>>>我是

0 我

1 是

7.字符串里面的in操作,判斷字符是否在字符串中

S = "abcdef"
v = "b" in S
print (v)

C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py

True

###################灰魔法------結束####################在其他的數據類型里面都能用

isidentifier(self)  [aɪˈdentɪfaɪə(r)] 標識符

Return True if S is a valid identifier according
to the language definition

字母、數字、下划線 只要符合這3個條件就是標識符,如果寫上def  class 只要符合標識符的規則,我們就認為真

S = "_123"
v = S.isidentifier()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True

 

S = "123"
v = S.isidentifier()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

False

 

S = "sdfsdf"
v = S.isidentifier()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

True
expandtabs(self, tabsize=8) 這個可以做(表格對齊)

表示默認以8位一組為分割,如果這8位里面包含了\t,不夠的話\t就用幾個空格補齊,下面的例子就是

lp234567oiutr0987hggtsjjs

因為默認是8位一組,lp占了2位了所以\t就得用6個空格補全,234567就代表空格

Return a copy of S where all tab characters are expanded using spaces.
If tabsize is not given, a tab size of 8 characters is assumed

 

S = "lp\toiutr0987hggtsjjs"
v = S.expandtabs()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

lp      oiutr0987hggtsjjs

因為前面正好是8位,后面\t自己就占8位,也是8個空格

S = "lpoiutr0\t987hggtsjjs"
v = S.expandtabs()
print (v)

lpoiutr0        987hggtsjjs

再看下面這個,前8位是黃色,后面是四位加一個\t因為是8位一組,所以就用4個空格補齊了

S = "lpoiutr0987h\tggtsjjs"
v = S.expandtabs()
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

lpoiutr0987h    ggtsjjs

下面我們指定一下 以6位為單位分割

黃色是6個,綠色是6個,所以后面的\t自己就占6位

S = "lpoiutr0987h\tggtsjjs"
v = S.expandtabs(6)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

lpoiutr0987h      ggtsjjs

遇到\t是一組,因為指定了6位一組,lp只占2位,所以\t就是用四個空格補齊

S = "lp\toiutr0987hggtsjjs"
v = S.expandtabs(6)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

lp    oiutr0987hggtsjjs

第一組黃色,第二組綠色,都是6位一組,第三組hgg占用了3位,所以\t就是用3個空格補齊

S = "lptoiutr0987hgg\ttsjjs"
v = S.expandtabs(6)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

lptoiutr0987hgg   tsjjs

用expandtabs這個方法做個表格

S = "username\temail\tpasswd\ngouguoqi\t564039852@qq.com\t123456\nbeiye\t564039852@qq.com\t123456\nmiaoye\t564039852@qq.com\t123456"
v = S.expandtabs(20)
print (v)

C:\python35\python3.exe D:/pyproject/day11數據類型的方法/str-way.py

username            email               passwd

gouguoqi            564039852@qq.com    123456

beiye               564039852@qq.com    123456

miaoye              564039852@qq.com    123456


免責聲明!

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



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