day8-字符串
-
1.什么是字符串(str)
1)字符串
字符串是容器型數據類型(序列),單引號和雙引號是標志。引號中所有內容都是字符串的元素
2)字符串元素
字符串中元素又叫字符(在python中長度是1的字符串就可以看成字符)
a.轉義字符:特殊符號前加\,表示特殊意義和功能
\' - '
\" - "
\n - 換行
\\ - \
\t - 相當于縮進
b.編碼字符:\u4位16進制數 將4位16進制數對應的編碼打印
1)字符編碼
2)ASCII和Unicode編碼表
中文對應的Unicode中的范圍:0x4e00 - 0x9fa5
3)字符編碼相關方法:
chr(編碼值) - 將編碼值轉換成字符
ord(字符) - 獲取字符對應的編碼值
str1 = 'abc\'123'
print(str1) # abc'123
str2 = 'abc\n123'
print(str2) # abc
# 123
str2 = 'abc\\n123'
print(str2) # abc\n123
print('\u5e00') # 幣
# 2.字符編碼
print(chr(97)) # a
print(chr(0x1800)) # ? 蒙語
for x in range(0x1800, 0x18af):
print(chr(x), end=' ')
print()
for x in range(0x1100, 0x11ff):
print(chr(x), end=' ')
print()
# 打印中文
# num = 0
# for x in range(0x4e00, 0x9fa5):
# num += 1
# print(chr(x), end=' ')
# if num % 50 == 0:
# print()
# print()
# ord
print(ord('蔣'), ord('南'), ord('軻')) # 33931 21335 36722
print(hex(ord('蔣')), hex(ord('南')), hex(ord('軻'))) # 0x848b 0x5357 0x8f72
print(ord('a')) # 97
字符串相關操作
-
1.獲取字符 - 和列表獲取元素一樣
str1 = 'hello world!'
# 1)獲取單個字符
print(str1[0]) # 'h'
print(str1[-2]) # 'd'
# 2)字符串切片
print(str1[2:6:2]) # 'lo'
print(str1[-2:-6:-1]) # 'dlro'
print(str1[2:6:-2]) # '' 空串
print(str1[3::-1]) # 'lleh'
print(str1[3:0:-1]) # lle
# 3)遍歷
for char in 'abc':
print(char)
-
2.字符串操作:
1)+ 和 *
字符串1 + 字符串2 - 將字符串1和字符串2拼接在一起,產生一個新的字符串
字符串N、N字符串 - - 字符串重復出現N次產生一個新的字符串
str1 = 'abc'
str2 = '123'
print(str1 + str2) # abc123
print(3 * str2) # 123123123
- == !=:
print('abc' == 'abc') # True
print('abc' == 'acb') # False
, <, <=, >=
只能兩個字符串比較大小 -- 注意:從前往后按順序比較對應字母編碼的大小
# '0' <= char <= '9' 判斷是否是數字
# '\u4e00' <= char <= '\u9fa5' 判斷是否是中文
# 'a' <= char <= 'z' 判斷是否是小寫字母
# 'A' <= char <= 'Z' 判斷是否是大寫字母
- in /not in
字符串1 in字符串2 - 判斷字符串2中是否包含字符串1
5)len, max, min, sorted, str
字符串轉換:所有數據都可以轉換成字符串,轉換時候是將數據放在引號中
注意:轉義字符和編碼字符的長度都是1
6)r語法:
在字符串的最前面加r/R,可以阻止字符串中所有的轉義字符轉義
str1 = '\tabc\nare\'you!\u4e00'
print(str1) # abc
# are'you!一
str1 = r'\tabc\nare\'you!\u4e00'
print(str1) # \tabc\nare\'you!\u4e00
str1 = '\tabc\\nare\'you!\u4e00'
print(str1) # abc\nare'you!一
7)格式化字符串
在字符串中用格式占位符表示字符串中不確定的部分
a.語法:包含格式占位符的字符 % (數據1, 數據2 ,...) -()中數據的個數和類型要和前面的格式占位符一一對應
b.格式占位符:
%s - 字符串
%d - 整數
%.Nf - 浮點數,N控制小數點后小數的位數
%c - 字符(可以將數字轉換成字符)
注意:1)不清楚數據類型時候,都可以用 %s 來作格式占位符
2)所有的數據都可以使用%s來接收
str4 = 'a:%s, b:%d, c:%.2f, d:%f' % ('how', 100, 1.23456, 1.232)
print(str4) # a:how, b:100, c:1.23, d:1.232000
字符串相關方法
1.對齊方式:
- 字符串.center(寬度, 填充字符='') - 居中
str1 = 'abc'
print(str1.center(9, '+')) # +++abc+++ 居中
- 字符串.ljust(寬度, 填充字符='') - 左對齊
print(str1.ljust(9, '+')) # abc++++++ 左對齊
- 字符串.rjust(寬度, 填充字符= '') - 右對齊
print(str1.rjust(9, '+')) # ++++++abc
- 字符串.zfill(寬度) == 字符串.rjust(寬度, 0)
print(str1.zfill(9)) # 000000abc
2.統(tǒng)計子串個數
- 字符串1.count(字符串2) - 統(tǒng)計字符串1中字符串2的個數
str1 = 'abcdbcgfa'
print(str1.count('a')) # 2
3.獲取子串下標
- 字符串.find(子串) - 查找到子串第一次出現的位置,不存在時候,返回-1
str1 = 'sdfghjkfdhsgasd'
print(str1.find('d')) # 1
- 字符串.index(子串) - 如果不存在,會報錯
str1 = 'sdfhsgasd'
print(str1.index('g')) # 5
4.join方法
- 字符串.join(序列) - 將序列中的元素用字符串連接產生一個新的字符串
要求:序列中的元素必須是字符串,如果是字典,key是字符串
str2 = '+'.join('123')
print(str2) # 1+2+3
5.替換
- 字符串1.replace(字符串2,字符串3) - 將字符串1中的字符串2全部替換成字符串3
str1 = 'how are you! Im fine, thank you! and you?'
new_str1 = str1.replace('you', 'YOU')
print(new_str1) # how are YOU! Im fine, thank YOU! and YOU?
- 字符串1.replace(字符串2, 字符串3,N) -- 將字符串1中的前N個字符串2替換成字符串3
new_str1 = str1.replace('you', 'me', 2)
print(new_str1) # how are me! Im fine, thank me! and you?
6.字符串切割
- 字符串1.split(字符串2) - 將字符串2作為切割點切割字符串1, 返回一個列表
str1 = 'how are you! Im fine, thank you! and you?'
str_list = str1.split(' ')
print(str_list) # ['how', 'are', 'you!', 'Im', 'fine,', 'thank', 'you!', 'and', 'you?']
str_list = str1.split('!')
print(str_list) # ['how are you', ' Im fine, thank you', ' and you?']
7.將第一個字符變成大寫
- 字符串.capitalize()
str = 'this is string'
print (str.capitalize()) # This is string
8.endswith()方法
- 字符串1.endswith(字符串2) - 判斷字符串1是否以字符串2結尾
str1 = 'hello world!!'
print(str1.endswith('!!')) # True
9.lower() - 將字符串中所有大寫字符轉小寫
- 字符串.lower()
str1 = 'JNKGJDsjdjjmc'
print(str1.lower()) # jnkgjdsjdjjmc
10.upper() - 將字符串中小寫字母全部轉成大寫
- 字符串.upper()
str1 = 'ghjkcvb'
print(str1.upper()) # GHJKCVB
11.max() - 獲取字符串中最大的字母
- max(字符串)
str1 = 'ghjkslieukd'
print(max(str1)) # u
12.rfind() - 類似find函數,不過是重右邊查找
- 字符串1.rfind(字符串2,開始下標,結束下標)