day 07 總結(jié)

day 07 字符串

Date:2019.4.22

內(nèi)容綱要:

xmind.07.jpg

一、字符串

1.什么是字符串(str)

1)字符串是python提供的容器型數(shù)據(jù)類型(序列),不可變、有序不可變 - 不支持增刪改;有序 - 支持下標(biāo)操作
2)python中的字符串使用單引號或者雙引號引起來的字符集,引號里面的每一個基本單元叫字符
# 容器型數(shù)據(jù)類型
str1 = 'hello'
strl = 'aello'

2.字符

??python中只有字符概念,沒有字符類型

1)普通字符:數(shù)字、字母、普通符號、中文、日語、等
str2 = 'a'
print(type(str2), str2)
2)轉(zhuǎn)義字符:

??在特定的符號前加''來表示是特殊功能或者特殊意義的字符

  • \n - 換行(相當(dāng)于回車)
  • \ ' - 單引號字符(不是字符串開頭、結(jié)尾的標(biāo)志)
  • \ " - 雙引號字符(不是字符串開頭、結(jié)尾的標(biāo)志)
  • \ \ - 反斜杠本身(讓一個反斜杠失去轉(zhuǎn)義的功能)
  • \t - 制表符(相當(dāng)于tab)
str3 = '\t12\'3\na\"bc\\none'
print(str3)

??阻止轉(zhuǎn)義:在字符串的最前面加r或者R,能夠阻止字符中所有的轉(zhuǎn)義字符轉(zhuǎn)義。

str4 = R'\thow\nare\nyou'
print(str4)
3)編碼字符:在字符串中\(zhòng)u四位十六進(jìn)制數(shù),來表示一個字符
# \u字符編碼值的16進(jìn)制數(shù)
str5 = '123\u4e11'
print(str5)
3.1)字符編碼:

??字符在計算機(jī)里存儲的值,計算機(jī)本身只有只有存儲數(shù)字的額能力(存數(shù)字的二進(jìn)制的補(bǔ)碼),為了能夠存儲數(shù)字以外的符號,開發(fā)人員給每個字符對應(yīng)一個固定的數(shù)字,用來對字符進(jìn)行存儲,每個字符對應(yīng)的固定的數(shù)字就是字符的編碼值。每個字符和數(shù)字的一一對應(yīng)關(guān)系就是字符編碼表,常見的編碼表有:ASCII碼表、Unicode編碼表
ASCII碼表采用一個字節(jié)對字符進(jìn)行的編碼:0-127
unicode編碼表采用兩個字節(jié)對字符進(jìn)行編碼,包含了ASCII碼
chr函數(shù):chr(編碼值) - 獲取編碼值對應(yīng)的字符
ord函數(shù):ord(字符)- 獲取制定字符對應(yīng)的編碼

print(chr(100), chr(0x5e00))
print(ord('李'), ord('卓'), ord('然'))

??練習(xí):查看日語的所有片假名

for code in range(0x30a0, 0x30ff):
    print(chr(code))

3.字符串操作:查

1)獲取單個字符
??語法:字符串[下標(biāo)] - 獲取制定下標(biāo)對應(yīng)的字符
說明:
  • 字符串 - 結(jié)果是字符串的表達(dá)式(字符串值、字符串變量、運(yùn)算結(jié)果是字符串)
  • [] - 固定寫法
  • 下標(biāo) - 又叫索引,值是整數(shù),字符串確定后,字符串中的每一個字符都有一個確定的下標(biāo)(索引)表示這個字符在字符串中的位置,python中下標(biāo)有兩種,位置從前往是0~字符串長度-1,位置從后
    往前是-1~-字符串長度
    【注】:獲取單個字符的時候下標(biāo)不能越界
str6 = 'hello'
print(str6[0])        # h
print(str6[-1])       # o

str7 = '\tabc 123'
print(str7[2], str7[5])
# print(str2[100]) 會報錯:string index out of range(下標(biāo)越界)
2)獲取部分字符(字符串切片)
??語法:字符串[開始下標(biāo):結(jié)束下標(biāo):步長]

??從開始下標(biāo)獲取,每次增加步長取下一個值,取到結(jié)束下標(biāo)為止(結(jié)束下標(biāo)的值取不到)

說明:
  • 字符串* - 結(jié)果是字符串的表達(dá)式(字符串值、字符串標(biāo)量、運(yùn)算結(jié)果是字符串)
  • [] - 固定寫法
  • 開始下標(biāo) - 下標(biāo),整數(shù)。能取到對應(yīng)的字符
  • 結(jié)束下標(biāo) - 下標(biāo),整數(shù)。對應(yīng)的字符無法取到
  • 步長 - 整數(shù)。如果步長是整數(shù),從前往后取;如果步長是負(fù)數(shù),從后往前取

【注】:

  1. 字符串切片的結(jié)果,都是字符串
  2. 如果步長是正數(shù),那么開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符前面,才能取到值;如果步長是負(fù)數(shù),那么開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符后面,才能取到值
  3. 切片的時候下標(biāo)可以越界
str8 = 'abc+123'
print(str8[0:3:1])    # abc

print(str8[2:-2:1])    # c+1
print('結(jié)果:', str8[2:-2:-1])    # 空串

print(str8[0:-1:1])     # abc+12
print(str8[-1:2:-1])    # 321+
print(str8[-1:1:-2])    # 31c
print(str8[2:100:1])    # c+123
3)獲取部分字符的簡寫
  1. 省略步長 - 步長為1
    語法:字符串[開始下標(biāo):結(jié)束下標(biāo)] <--> 字符串[開始下標(biāo):結(jié)束下標(biāo):1]
  2. 省略開始下標(biāo) - 步長為正從字符串開頭往后獲取,步長為負(fù)從字符串最后往前獲取
    語法:字符串[:結(jié)束下標(biāo):步長(等于1時可省略)]
str9 = 'hello world'
print(str9[3:-2])   # lo wor
print(str9[:5])     # hello
print(str9[:5:-1])  # dlrow

  1. 省略結(jié)束下標(biāo) - 步長為正,從開始下標(biāo)取到字符串結(jié)尾,步長為負(fù),從結(jié)尾取到第一個字符為止
    語法:字符串[開始下標(biāo)::步長(步長為1可省略)]
str_1 = 'hello world'
print(str_1[1:])     # ello world
print(str_1[1::-1])  # eh

print(str_1[:])      # hello world
print(str_1[::-1])   # dlrow olleh 字符串倒序
4)遍歷字符串 - 將字符串中的字符一個一個的取出來

??for 變量 in 字符串:
????循環(huán)體

# 直接遍歷,變量取到的就是字符
for char in str_1:
    print(char)
print('===========================')
# 間接遍歷,通過遍歷下標(biāo)遍歷字符
for index in range(11):
    print(str_1[index])

for index in range(-1, -11, -1):
    print(index, str_1[index])

??練習(xí):統(tǒng)計輸入的字符串中字母a出現(xiàn)的次數(shù)

# 例如:輸入'how,are you! fine,thanks. and you'
word = input('請輸入字符串:')
count = 0
for char in word:
    if char == 'a':
        count += 1
print(count)

二、字符串的相關(guān)操作

1.字符串的運(yùn)算:

1)數(shù)學(xué)運(yùn)算符:+,*
#  + :兩個字符串相加 -->將兩個字符串拼接產(chǎn)生一個字符串
str1 = 'abc' + 'hello'
print(str1)
# *:字符串*正整數(shù)或者正整數(shù)*字符串:字符串重復(fù)制定次數(shù)產(chǎn)生一個新的字符串
str2 = 'abc' * 3
print(str2)
2)比較運(yùn)算:>, <, >=, <=, ==, !=
# 針對兩個字符串進(jìn)行比較
str3 = 'abc'
print('abc' == str3)
# 字符串比較大?。喊次恢脧那巴笠粚σ粚Φ谋容^,找出第一對不相等的字符,比較編碼值。
print('abcdef' > 'az')

應(yīng)用:
判斷一個字符是否是小寫字母:'a' <= char <= 'z'
判斷一個字符是否是大寫字母:'A' <= char <= 'Z'
判斷一個字符是否是字母:'a' <= char <= 'z’ or 'a' <= char <= 'z‘
判斷一個字符是否是數(shù)字字符:'0' <= char <= '0
判斷一個字符是否是中文(4e00-9fa5):'\ue400' <= char <= '\u9fa5' or '一' <= char <= '龥'
??練習(xí):統(tǒng)計一個字符串中的大寫字母個數(shù)

value = input('請輸入字符串')
count = 0
for char in value:
    if 'A' <= char <= 'Z':
        count += 1
print(count)
3)賦值運(yùn)算:=,+=,*=
str5 = '你好'
str5 += 'hello'
print(str5)
str5 *= 2
print(str5)

2.in 和not in

??字符串1 in 字符串2 - 判斷字符串2中是否包含字符串1

print('abc' in '123abc')    # True
print('abc'in '123ab1c')    # False
print('A'in 'hell A')       # True
print('A' not in 'hello A')  # False

3.len

??len(字符串) - 獲取字符串長度(字符串中字符的個數(shù)

print(len('abc'))
print(len('\tabc'))
str6 = '    abc'
print(len(str6))

print(len('\u4e00abc'))
for index in range(len('husjssas')):
    print(index)

4.str

??str(數(shù)據(jù)) - 將其他類型數(shù)據(jù)轉(zhuǎn)換成字符串
??所有類型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串;轉(zhuǎn)換的時候直接數(shù)據(jù)外面加引號

print(str(100))
print(str(12.5))
print(str(True))

5.格式字符串:在字符串中用格式占位符代替字符串中變化的部分,然后再使用數(shù)據(jù)對變化的部分進(jìn)行賦值

??語法:包含格式占位符的字符串%(數(shù)據(jù)1,數(shù)據(jù)2,...)

【注】:數(shù)據(jù)的個數(shù)和類型要和前面字符串中格式占位的個數(shù)和類型保持一致
格式占位符:

  • %s - 字符串
  • %d - 整數(shù)
  • %.Nf - 浮點(diǎn)數(shù) - (N控制小數(shù)后小數(shù)的位數(shù))
  • %c - 字符、字符對應(yīng)的編碼值
name = input('姓名')
age = int(input('請輸入年齡'))
money = 3.5
# message = '我今年xx歲'
message = '我是' + name + ',我今年' + str(age) + '歲'
message1 = '我是%s,今年%d歲,薪資:%.1fk' % (name, age, money)
print(message1)
附:字符的對象方法

??Python 的字符串常用內(nèi)建函數(shù)如下:

序號 方法 描述
1 capitalize() 將字符串的第一個字符轉(zhuǎn)換為大寫
2 center(width, fillchar) 返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認(rèn)為空格。
3 count(str) 返回 str 在 string 里面出現(xiàn)的次數(shù)
4 bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。
5 encode(encoding='UTF-8',errors='strict') 以 encoding 指定的編碼格式編碼字符串,如果出錯默認(rèn)報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
6 endswith(suffix) 檢查字符串是否以 obj 結(jié)束,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是,返回 True,否則返回 False.
7 expandtabs(tabsize=8) 把字符串 string 中的 tab 符號轉(zhuǎn)為空格,tab 符號默認(rèn)的空格數(shù)是 8 。
8 find(str, beg=0 end=len(string)) 檢測 str 是否包含在字符串中,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內(nèi),如果包含返回開始的索引值,否則返回-1
9 index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在字符串中會報一個異常.
10 isalnum() 如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返 回 True,否則返回 False
11 isalpha() 如果字符串至少有一個字符并且所有字符都是字母則返回 True, 否則返回 False
12 isdigit() 如果字符串只包含數(shù)字則返回 True 否則返回 False..
13 islower() 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True,否則返回 False
14 isnumeric() 如果字符串中只包含數(shù)字字符,則返回 True,否則返回 False(中文數(shù)字也可以)
15 isspace() 如果字符串中只包含空白,則返回 True,否則返回 False.
16 istitle() 如果字符串是標(biāo)題化的(見 title())則返回 True,否則返回 False
17 isupper() 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True,否則返回 False
18 join(seq) 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個新的字符串
19 len(string) 返回字符串長度
20 ljust(width[, fillchar]) 返回一個原字符串左對齊,并使用 fillchar 填充至長度 width 的新字符串,fillchar 默認(rèn)為空格。
21 lower() 轉(zhuǎn)換字符串中所有大寫字符為小寫.
22 lstrip() 截掉字符串左邊的空格或指定字符。
23 maketrans() 創(chuàng)建字符映射的轉(zhuǎn)換表,對于接受兩個參數(shù)的最簡單的調(diào)用方式,第一個參數(shù)是字符串,表示需要轉(zhuǎn)換的字符,第二個參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。
24 max(str) 返回字符串 str 中最大的字母。
25 min(str) 返回字符串 str 中最小的字母。
26 replace(old, new [, max]) 把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。
27 rfind(str, beg=0,end=len(string)) 類似于 find()函數(shù),不過是從右邊開始查找.
28 rindex( str, beg=0, end=len(string)) 類似于 index(),不過是從右邊開始.
29 rjust(width,[, fillchar]) 返回一個原字符串右對齊,并使用fillchar(默認(rèn)空格)填充至長度 width 的新字符串
30 rstrip() 刪除字符串字符串末尾的空格.
31 split(str="", num=string.count(str)) num=string.count(str)) 以 str 為分隔符截取字符串,如果 num 有指定值,則僅截取 num 個子字符串
32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。
33 startswith(str, beg=0,end=len(string)) 檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內(nèi)檢查。
34 strip([chars]) 在字符串上執(zhí)行 lstrip()和 rstrip()
35 swapcase() 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫
36 title() 返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle())
37 translate(table, deletechars="") 根據(jù) str 給出的表(包含 256 個字符)轉(zhuǎn)換 string 的字符, 要過濾掉的字符放到 deletechars 參數(shù)中
38 upper() 轉(zhuǎn)換字符串中的小寫字母為大寫
39 zfill (width) 返回長度為 width 的字符串,原字符串右對齊,前面填充0
40 isdecimal() 檢查字符串是否只包含十進(jìn)制字符,如果是返回 true,否則返回 false。

??字符串.函數(shù)名()

1.capitalize() - 將字符串中的第一個字符轉(zhuǎn)換成大寫字母
str7 = 'abc'
print(str7.capitalize())
2.設(shè)置對齊方式

??字符串.center(width, fillchar) - 讓字符串在新字符串中居中,width控制新子串的寬度,fillchar是填充字符

  • 字符串.ljust(width,fillchar)
  • 字符串.rjust(width,fillchar)
  • 字符串.zfill(width) <==>字符串.rjust(width, '0')
str8 = 'abc'
print(str8.center(7, '+'))
print(str8.ljust(7, '%'))
print(str8.rjust(7, '='))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.回顧 1.變量 語法:變量名 = 值 說明:變量名 - 標(biāo)識符。不能是關(guān)鍵字見名忘意,所有的字母小寫多個單...
    Sun_092b閱讀 213評論 0 1
  • 一 字符編碼 1.什么是字符串 特點(diǎn):序列,有序,不可變的。形式:用單引號或者雙引號括起來的任意字符集。...
    Fly_withbird閱讀 463評論 0 0
  • 1.運(yùn)算符: 數(shù)學(xué)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符 數(shù)學(xué)運(yùn)算符: +, -, *, /, //, **,...
    LittleBear_6c91閱讀 87評論 0 0
  • 一、獲取字符 1.單個字符 原理:字符串中的每一個字符都會對應(yīng)一個唯一的下標(biāo)(索引)下標(biāo):用來表示字符在字符串中的...
    兩只小豬呼嚕嚕_1539閱讀 567評論 0 1
  • 一.上周回顧 1.變量 變量名 = 值變量名 - 標(biāo)識符,不能是關(guān)鍵字見名知義,所有字母小寫多個單詞之間用_隔開,...
    楊廣劍python閱讀 152評論 0 0

友情鏈接更多精彩內(nèi)容