Python基礎3切片,字符串的方法,for 循環


切片

切片截取序列(字符串,列表,元組等)中某一段字符,並不改變原數據和數據類型。結構:[起始位置:終止位置:步長]  但不包括終止位置。所謂:顧頭不顧尾。

索引:序列中每個元素都是有編號的,都是從0開始編號的。使用負數索引時,Python會從右邊開始數,第一個元素為-1. 注意:用索引,在列表里是什么類型取出來的就是什么數據類型。而切片不一樣,切出來的都是列表。

范例:

list=[1,2,"wo"]
print(list[1],type(list[1]))
print(list[2],type(list[2]))
print(list[1:2],type(list[1:2]))
print(list)

結果:

2 <class 'int'>
wo <class 'str'>
[2] <class 'list'>
[1, 2, 'wo']

倒取值(即取負值)切片:起始位置和步長共同決定了切取的方向,如果這兩個切取方向不一致,會導致出現空值.

例子

word = "我是中國你好世界"

print(word[-1:-5:-1])  # 注意:步長為負的,起始位置從右往左,所以應該從右向左切片

# 結果  界世好你

print(word[1:5:1])  # 注意:步長正的,起始位置從左往右,所以應該從左向右切片
# 結果  是中國你

print(word[-1:5:1])  # 注意:步長正的,起始位置從右往左,相矛盾所以為空
# 結果空

 

字符串方法

字符串是不可變類型,就是說改變一個字符串的元素需要新建一個新的字符串,注意注意!!!這句話並不意味着,字符串沒有方法,而是任何方法都不會改變原字符串,要得到使用方法的的結果只能另命名變量。它不像列表,使用方法(切片除外)會改變原列表。Python 里面沒有字符這個類型,而是用長度為 1 的字符串來表示這個概念

范例:

 

print("list1",list1)
print("new_list",new_list) #原字符串就不會變

 

結果:

list1 nihaokdjl
new_list niHaokdjl

范例2:

list=[1,2,3,4]
list.append(6666) print("list",list) #列表就會變

結果:

list [1, 2, 3, 4, 6666]

 如何改變一個字符串?

注意!注意!字符串是不可以改變的,但是你可以通過拼接,來“改變字符串”。

a="您好,日本"
print(a,id(a))
a=a[:3]+"中國"
print(a,id(a))

結果:

您好,日本 2207187472184
您好,中國 2207188312992         #還是沒有改變原來的字符串,僅僅是定義了一個和他相同的變量

 

1.capitalize 字符串首字母大寫,其余的全小寫。

s="abdeH,ehrDFG"
print(s.capitalize())

結果:

Abdeh,ehrdfg

2.title字符串 以特殊符號或者空格隔開,隔開的每一部分的首字母大寫,如果不隔開那就是一個字符串的首字母大寫。其余的全是小寫,與capitalize的不同是,capitalize特殊符號或者空格隔開的首字母不大寫。

列子:

s="abdeH,ehrerG"
b="sjhiHjkh"
print("s",s.t)itle())
print("b",b.title()

結果:

s Abdeh,Ehrerg
b Sjhihjkh

3. upper() 方法將字符串中的小寫字母轉為大寫字母。這里不舉例子了

4. lower() 方法將字符串中的大寫字母轉為小寫字母。這里不舉例子了

5.count(“某元素”,索引開始,索引結束)字符串中某元素出現的個數,索引可以不寫。

s="abdeH,ehrerG"
print("s",s.count("e"))

結果:

s 3

6.startswith 判斷是否以..開頭

  endswith 判斷是否以..結尾

例子:

s="abdeH,ehrerG"
print("s",s.startswith("abde"))
print("s",s.endswith("Gr"))
print("s",s.endswith("rG"))

結果:

s True
s False   #
s True   #注意這個和上個的不同

7.find 尋找某個元素的索引值   str.find(str, beg=0, end=len(string))。如果找不到顯示-1.

index 尋找某個元素的索引值   str.find(str, beg=0, end=len(string))。如果找不到顯示會報錯.

注意這兩個函數:如果字符串中有多個相同的元素,只會得到最左邊的索引。
s="abdeH,ehrerG"
print("s",s.find ("e"))
print("s",s.index ("e"))
print("s",s.index("tt"))

結果:

s 3
Traceback (most recent call last):
s 3
  File "C:/Users/PycharmProjects/untitled/day1/聯系.py", line 463, in <module>
    print("s",s.index("tt"))
ValueError: substring not found

8.strip() 方法用於移除字符串頭尾指定的字符(默認為默認刪除空白符(包括'\n', '\r',  '\t',  ' ')),可傳入一個參數,指定要去除的首尾。需要注意的是:傳入的是一組字符串是編譯器去除兩端所有相應的字符,這個相應的字符是什么意思?這是關鍵看例子:

heString = 'saaaay yes no yaaaass'
print(theString.strip("say"))

得到的答案:

 yes no 

您發現了什么?是不是只要前后兩端含有"a","s","y",就會從兩端向中間開始刪除,直到遇到不是這三個字符停止。並不是把"say"當做整體去刪除。

 rstrip() 刪除 string 字符串右邊(right)的指定字符(默認為空格).方法同strip,

 lstrip() 刪除 string 字符串左邊(left)的指定字符(默認為空格).方法同strip,

列子:

s="aabdeH,ehrerG"
print("s",s.strip ("a",))
print("s",s.strip ("G",))

結果:

s bdeH,ehrerG
s aabdeH,ehrer

8.5 list()。將字符串按照字符分割成列表

a = 'wupeiqi'
l = list(a)
print(l)

結果:

['w', 'u', 'p', 'e', 'i', 'q', 'i']

9.str.split(str="", num=string.count(str)).將字符串按照分隔符分割成列表 

  • str -- 分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
  • num -- 分割次數。

例子:

s="aabdeH,ehrerG"
print("s",s.split (",",1))

結果:

s ['aabdeH', 'ehrerG']

10. replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數max,則替換不超過 max 次。如果不指定第三個,則全部替換。

str.replace(old, new[, max])
例子:
s="我愛中國,中國中國"
print("s",s.replace ("中國","我國",1))

結果:

 我愛我國,中國中國

10. str.isdigit()  判斷字符串是否全部由數字組成。 

11.str.isalnum  判斷字符串是否含有數字或字母。

字符串的格式化

format_map

利用字典的映射關系

a = {
    "k":"中國",
    "l":"你好"
}
str = "{l},我愛{k}".format_map(a)
print(str)

結果:你好,我愛中國

 

profession = { 'name':['Barry', 'Bruce'], 
               'profession':['Engineer', 'Doctor'], 
               'age':[30, 31] } 
                       
# Use of format_map() function  
print('{name[0]} is an {profession[0]} and he'
      ' is {age[0]} years old.'.format_map(profession)) 
        
print('{name[1]} is an {profession[1]} and he'
      ' is {age[1]} years old.'.format_map(profession)) 

#結果:
Barry is an Engineer and he is 30 years old.
Bruce is an Doctor and he is 31 years old.

a = "中國"
str = f"你好,我愛{a}"
print(str)

#結果:你好,我愛中國

 format

format是我們比較常用的一個字符串格式化的方法

簡單的方法就不說了,說一下我在項目中遇到的format的用法,帶有":"的

數字格式的定義以 ':' 號開始。碰到了': '字符就知道要定義一個數字的顯示格式了。格式的定義順序為 

1. 對齊方式(>右對齊、<左對齊、^居中)

print('{:>10}'.format(933)) #10代表的為10位,不夠10位的用空格表示,>代表右對齊
#結果
       933

2. 保留小數

print('{:.2f}'.format(99.887))  # 2f指的是保留2位小數

#結果
99.89

3.將小數轉換成百分比

print('{:.2%}'.format(0.333))  # 2%指的是保留小數點后兩位

#結果
33.30%

4.將10進制轉換成其他進制

'{0:x}'.format(20)                轉換成十六進制

'{0:o}'.format(20)                轉換成八進制    

      進制轉換的時候用{0:進制}

 

5.指定整數的位數,不足在前邊用0補齊

import random

verify_code = '{0:06d}'.format(random.randint(0, 999999)) #06指定出現的數字是6位的,不夠6位的用0補在前面湊夠6位,:前邊的0可以省略
print(">>>", verify_code)

#結果
053865

 

 

for 循環

不用for循環如何把一段字符串中的每個元素打印出來?

seer="我愛中國我是中國人"
count=0
while count<len(seer):
    print(seer[count])
    count+=1

結果:

我
愛
中
國
我
是
中
國
人


免責聲明!

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



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