day_002 Python中的字符串操作

一、字符串

1.字符串的基本知識

要點:

  • 使用單/雙引號括起來的字符集就是字符串
    如:
    '56'
    'sdff'
    '#$#dffdf'
    '舒服點'
    ' '
  • 引號中單獨的符號、數(shù)字、字母等叫字符
  • 轉義字符:可以用來表示一些有特殊功能或者特殊意義的字符(通過在固定的字符前加\)
    如:
    \' ----- '
    \\ -----
    \n ----- 換行
    \t ----- 制表符
    注意:在計算字符串長度的時候,轉義字符代表一個字符

示例:

str1 = '鋤禾日當午,\n汗滴禾下土。\n誰知盤中餐,\n粒粒皆辛苦。'
print(str1)
print(len(str1))

結果:

鋤禾日當午,
汗滴禾下土。
誰知盤中餐,
粒粒皆辛苦。
27
  • 阻止轉義
    在字符串前加r/R可以阻止轉義

示例:

print(r'\\')

結果:

\\

2.Python中的字符串中的字符是Unicode編碼

要點:

  • Unicode編碼:使用16位對一個字符進行編碼。編碼的目的是讓字符可以存儲到計算機中。
  • Unicode碼中包含了ASSCII碼??梢员硎臼澜缟纤械恼Z言和符號。

示例:
獲取一個字符的Unicode碼
ord(字符),結果為十進制數(shù),可用hex()轉化為十六進制數(shù)

name = '我的天'
list1 = []
for word in name:
    print('十進制數(shù):', ord(word))
    print('十六進制數(shù):', hex(ord(word)))
    list1.append(ord(word))

print(list1)

結果:

十進制數(shù): 25105
十六進制數(shù): 0x6211
十進制數(shù): 30340
十六進制數(shù): 0x7684
十進制數(shù): 22825
十六進制數(shù): 0x5929
[25105, 30340, 22825]

同樣也可以將Unicode碼轉換成字符
示例:
將Unicode碼轉化成字符
chr(編碼值),注意:chr()的參數(shù)類型為int??梢允鞘M制數(shù)和十六進制數(shù),但是str類型的十六數(shù)進制會報錯

for num in list1:
    print(num, type(num))
    print(chr(num))

print(chr(0x4E00))

結果:

25105 <class 'int'>
我
30340 <class 'int'>
的
22825 <class 'int'>
天
一

3.字符串比較大小

要點:

  • 字符串比較大小,從第一個字符開始,一次往后比較每個字符的大小,直到遇到字符不一樣為止。
  • 比較字符大小的時候,實質比的是他們額編碼的大小。

示例:

print('abc' > 'b')
print('a' == 'a')

結果:

False
True

二、獲取字符串的字符

Python的字符串實質是一個有序的字符序列。

1.獲取字符串的長度:(長度 ----- 字符串中字符的個數(shù))

要點:

  • len()是獲取序列長度的內置函數(shù)

示例:

length = len('i am Mark')
print(length)

結果:

9

2.通過下標獲取字符串中的單個字符

要點:

  • 字符串中的每個字符都對應一個下標(索引).可以通過索引值獲取指定的字符
    如:'abc'中,'a'的下標為0或者-3,'b'的下標為1或者-2,'c'的下標為2或者-1。
  • 下標的范圍: 0 ~ 字符串長度-1
  • 索引也可以用負數(shù),表示從右往左,右邊第一位的索引用負數(shù)表示為string[-1],第二位為string[-2]
  • 獲取字符的時候,索引值不能超出索引的范圍,否則會報IndexError錯誤

示例:

str1 = 'abcdefghijk'
a = str1[0]
print(a, type(a))
b = str1[1]
print(b, type(b))

結果:

a <class 'str'>
b <class 'str'>

3.獲取字符串中的部分字符

  • string[開始下標:結束下標:步進] ":步進"不寫默認為":1"
  • string[開始的下標:結束的下標] ----- 獲取字符串從開始下標到結束下標的字符(包含開始下標對應的字符,不包括結束下標的字符)

示例:
(1)開始和結束下標都有值時,要求:開始下標對應的字符要在結束下標對應的字符前面(步進為正數(shù))

#正序
str3 = 'hello Python'
python = str3[6:12]
print(python)

#倒序
python = str3[-6:12]
print(python)

結果:

Python
Python

(2)開始下標省略:從字符串的第一個字符取到結束下標前(不包括結束下標對應的字符)

python = str3[:4]
print(python)

結果:

hell

(3)結束下標省略:從開始下標對應的字符取到字符結束

python = str3[4:]
print(python)

結果:

o Python

(4)兩個都會省略:獲取整個字符串的內容

python = str3[:]
print(python)

結果:

hello Python

(5)設置步進

python = str3[::2]
print(python)

結果:

hloPto

(6)步進為負數(shù)

print(str3[3:1:-1])

結束:

ll

(7)倒序

print(str3[::-1])

結果:

nohtyP olleh

三、字符串運算符

1.+:字符串拼接

要點:

  • 要求:"+"兩邊類型相同,如字符串1+字符串2

示例:

str1 = 'hello' + ' ' + 'Python'
print(str1)

結果:

hello Python

2.*:讓字符串重復

要點:

  • 格式:字符串*正數(shù)

示例:

str2 = '嚶'*3
print(str2)

結果:

嚶嚶嚶

3.in:

要點:

  • 格式:字符串1 in 字符串2 作用:判斷字符串1是否在字符串3中 ----- 在就是True,不在就是False

示例:

result1 = 'a' in 'abc'
print(result1)

結果:

True

4.not in:

要點:

  • 格式:字符串1 not in 字符串2 作用:判斷字符串1是否不在字符串3中 ----- 不在就是True,在就是False

示例:

result2 = '123' not in 'abc'
print(result2)

結果:

True

5.格式字符串

要點:

  • 格式:'字符串1占位符1字符串2占位符2'%(值1,值2)
  • 常用格式字符串:
    %s ----- 字符串占位符(格式符)
    %d ----- 整數(shù)占位符(格式符)
    %f ----- 浮點數(shù)占位符(格式符)
    %c ----- 字符占位符(Python中為長度為1的字符串)(格式符)(可以給字符也可以給字符的編碼值)
    %u ----- 格式化無符號整形
    %x ----- 格式化無符號十六進制數(shù)(小寫)
    %X ----- 格式化無符號十六進制數(shù)(大寫)
    %e ----- 用科學計數(shù)法格式化浮點數(shù)
    %E ----- 同%e
    %g ----- %f和%e的簡寫
    %G ----- %f和%E的簡寫
    %.nf ----- 使用n值限制小數(shù)點后面額小數(shù)的位數(shù)(默認六位小數(shù))

示例:

str3 = 'abc%sABC%d'%('>', 234)
print(str3)

str4 = '%s-%d-%f-%c-%c'%('str', 12, 12.5, 'c',99)
print(str4)

str5 = '金額:%.2f元'%(100)
print(str5)

結果:

abc>ABC234
str-12-12.500000-c-c
金額:100.00元

如果后面沒有加%,那么這個字符串就是一個普通的字符串

str6 = '金額:%.2f元'
print(str6)

結果:

金額:%.2f元

四、字符串相關操作方法

字符串相關方法通用格式:字符串.方法()

1.capitalize()

作用:
將字符的首字母大寫,返回首字母大寫后的新字符串,不對原字符串操作(不對改變原字符串)。
示例:

str1 = 'abc'
str2 = str1.capitalize()
print(str1)
print(str1.capitalize())
print(str2)

結果:

abc
Abc
Abc

2.center(width, fillchar)

作用:
返回一個指定的寬度width居中的字符串,fillchar為填充的字符,默認為空格。不對原字符串操作(不對改變原字符串)。

示例:

str3 = str1.center(11, '-')
print(str3)
print(len(str3))

結果:

----abc----
11

3.強轉類型

作用:
將變量的類型轉換成目標數(shù)據(jù)類型(int、str等)

示例:

str4 = 123
str5 = str(str4)
print(str4, type(str4))
print(str5, type(str5))

結果:

123 <class 'int'>
123 <class 'str'>

4.rjust(width, fillchar)

作用:
返回一個指定的寬度width右對齊的字符串,fillchar為填充的字符,默認為空格。不對原字符串操作(不對改變原字符串)。

示例:

number = 9
num = str(number).rjust(3,'0')
stu_id = '1805' + num
print(number)
print(num)
print(stu_id)

結果:

9
009
1805009

5.ljust(width, fillchar)

作用:
和rjust(width, fillchar)相對,左對齊

示例:

u_id = '123.1'
u_id_l = u_id.ljust(5,'x')
print(u_id)
print(u_id_l)

結果:

231
231xx

6.isdigit()和isnumeric()

作用:
isdigit()和isnumeric()都是用來判斷字符串是否為數(shù)字(int類型)字符串,但是isdigit()只能判斷阿拉伯數(shù)字(如:1,2,3,4),isnumeric()能判斷漢字數(shù)字(包括大小寫,如:一、伍佰),但是不能判斷英文數(shù)字(如:one,two)

示例:
大寫漢字數(shù)字

u_id = '伍佰'
print(u_id.isdigit())
print(u_id.isnumeric())

結果:

False
True

小寫漢字數(shù)字

u_id = '一百二'
print(u_id.isdigit())
print(u_id.isnumeric())

結果:

False
True

整數(shù)阿拉伯數(shù)字

u_id = '120'
print(u_id.isdigit())
print(u_id.isnumeric())

結果:

True
True

浮點數(shù)

u_id = '120.012'
print(u_id.isdigit())
print(u_id.isnumeric())

結果:

False
False

7.join(seq)

作用:
在字符串2中的每一個字符后加入字符串1

示例:

strs = 'abc'
strs2 = strs.join(u_id)
print(strs2)

結果:

1abc2abc0abc.abc0abc1abc2

8.replace(old,new[,max])

作用:
用new替代字符串中的old,[,max]為要操作的次數(shù),不寫默認為全部替換。

示例:

string1 = '  jkj jkj jkj  '
print(string1.replace(' ', ''))

結果:

jkjjkjjkj
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容