python基本字符_Python基本字符串,基础,之
一:字符串
很多人初學(xué)編程時,總是擔(dān)心自己數(shù)學(xué)不行,潛意識里認(rèn)為數(shù)學(xué)好才能編程。實際上,大多數(shù)程序員打交道最多的是“字符串”而不是“數(shù)字”。因為,編程是用來解決現(xiàn)實問題的,因此邏輯思維的重要性遠遠超過數(shù)學(xué)能力。
字符串的本質(zhì)是:字符序列。Python的字符串是不可變的,我們無法對原字符串做任何修改。但可以將字符串的一部分復(fù)制到新創(chuàng)建的字符串,以達到“看起來修改”的效果。
1.1 字符串的編碼
Python3直接支持Unicode,可以表示世界上任何書面語言的字符。Python3的字符默認(rèn)就是16位Unicode編碼,ASCII碼是Unicode編碼的子集(ASCII碼只能表示英文與數(shù)字,一個字節(jié),每個字節(jié)8位)。
使用內(nèi)置函數(shù)==ord()
可以把字符轉(zhuǎn)換成對應(yīng)的Unicode碼
使用內(nèi)置函數(shù)
chr()==可以把十進制數(shù)字轉(zhuǎn)換成對應(yīng)的字符
print(ord('A'))# 65
print(ord('高'))# 39640
print(chr(65))# A
print(chr(39640))# 高
1.2 創(chuàng)建字符串
a = "I teach Chinese KongFu"
b = 'who are you?'
# 創(chuàng)建多行字符串
c = '''name="Bruce Lee"
company="sxt"
age = 32
lover = KongFu
'''
print(c)
多行字符串輸出結(jié)果:
name="Bruce Lee"
company="sxt"
age = 32
lover = KongFu
1.3 字符串長度
使用len()函數(shù)計算字符串的長度
a = ''# Python允許空字符串的存在
b = 'Bruce Lee 李小龍'
print(len(a))# 0
print(len(b))# 13 (包含空格,因為使用的是Unicode編碼所以一個中文漢字就是一個字符)
1.4 replace()實現(xiàn)字符串替換
字符串是“不可改變的”,我們通過[]可以獲取字符串指定位置的字符,但是我們不能改變字符串,當(dāng)嘗試改變字符串中某個字符,會報錯:
a = 'see you again'
a[2] = 'a'
print(a)
報錯信息如下:
TypeError: 'str' object does not support item assignment
當(dāng)需要改變某些字符時,就可以使用replace()
a = 'see you again'
b = a.replace('s', 'l')
print(a)# see you again
print(b)# lee you again
整個過程中,實際上我們是創(chuàng)建了新的字符串對象,并賦值給了變量b,而變量a則無變化
1.5 slice切片
切片slice操作可以讓我們快速的提取字符串,標(biāo)準(zhǔn)格式為:
[起始偏移量 start: 終止偏移量 end: 步長 step]
典型操作(三個量為正數(shù))的情況:
其他操作(三個量為負(fù)數(shù))的情況:
1.6 split()分割
split()可以基于指定分隔符將字符串分隔成多個子字符串(存儲到列表中)。如果不指定分隔符,則默認(rèn)使用空白字符(換行符/空格/制表符)。
a = 'to be or not to be'
b = a.split()
print(b)# ['to', 'be', 'or', 'not', 'to', 'be']
指定分隔符進行分隔
a = 'to be or not to be'
b = a.split('be')
print(b)# ['to ', ' or not to ', '']
1.7 join()合并
join()的作用與split()作用剛好相反,用于將一系列子字符串連接起來。
a = ['sxt', 'sxt100', 'sxt200']
b = '*'.join(a)# 指定使用*號將列表中的元素連接起來(也可以不指定,為空)
print(b)# sxt*sxt100*sxt200
使用字符串拼接符+,會生成新的字符串對象,因此不推薦使用+號來進行拼接字符串操作。
推薦使用join函數(shù),因為join函數(shù)在拼接字符串之前會計算所有字符串的長度,然后逐一拷貝,僅新建一次對象。
1.8 字符串駐留機制
字符串駐留:僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串駐留池中。
Python支持字符串駐留機制,對于符合標(biāo)識符規(guī)則的字符串(僅包含下劃線 _、字母和數(shù)字)會啟用字符串駐留機制。
a = 'abd_33'
b = 'abd_33'
print(a is b)# True (變量a和b都指向同一塊內(nèi)存地址)
# 下面使用的python版本為3.7.4,帶特殊字符#號,也是符合標(biāo)識符規(guī)則的字符串;早期版本下面為False,內(nèi)存地址也不一樣
c = 'dd#'
d = 'dd#'
print(c is d)# True (is 比較的是內(nèi)存地址)
print(c == d)# True(== 比較的是value)
print(id(c))# 1922673958320
print(id(d))# 1922673958320
1.9 格式排版
center(), ljust(), rjust()這三個函數(shù)用于對字符串實現(xiàn)排版
a = 'tom'
print(a.center(10, '*'))# ***tom****
print(a.center(10))# tom
print(a.ljust(10, '*'))# tom*******
1.10 字符串格式化
Python2.6 開始,新增了一種格式化字符串的函數(shù) str.format(),它增強了字符串格式化的功能。
基本語法是通過 {} 和 : 來代替以前的 % 。
format 函數(shù)可以接受不限個參數(shù),位置可以不按順序。
a = 'name is : {0}, age is : {1}'.format('Bruce Lee', 32)
b = 'name is : {}, age is : {}'.format('Jet Lee', 37)
c = 'name is: {0}, age is : {1}, {0} is a good guy'.format('Rambo', 22)
d = 'name is {name}, age is {age}'.format(name = 'Jacky', age = 33)
print(a)
print(b)
print(c)
print(d)
1.11 填充與對齊
填充常跟對齊一起使用
^、分別是居中、左對齊、右對齊,后面帶寬度
:號后面帶填充的字符,只能是一個字符,不指定的話默認(rèn)是用空格填充
a = "{:*>8}".format('234')
print(a)# *****234
b = 'I am {0}, I love number {1:*^8}'.format('Bruce Lee', '666')
print(b)# I am Bruce Lee, I love number **666***
1.12 數(shù)字格式化
浮點數(shù)通過 f,整數(shù)通過 d 進行需要的格式化。
a = "我是{0},我的存款有{1:.2f}".format('Bruce Lee', 3888.234234)
b = "我是{0},我的存款有{1:d}".format('Bruce Lee', 3888)
print(a)# 我是Bruce Lee,我的存款有3888.23
print(b)# 我是Bruce Lee,我的存款有3888
其他格式,供大家參考:
數(shù)字
格式
輸出
描述
3.1415926
{:.2f}
3.14
保留小數(shù)點后兩位
3.1415926
{:+.2f}
3.14
帶符號保留小數(shù)點后兩位
2.71828
{:.0f}
3
不帶小數(shù)
5
{:.0>2d}
05
數(shù)字補零 (填充左邊, 寬度為 2)
5
{:x<4d}
5xxx
數(shù)字補 x (填充右邊, 寬度為 4)
10
{:x<4d}
10xx
數(shù)字補 x (填充右邊, 寬度為 4)
1000000
{:,}
1,000,000
以逗號分隔的數(shù)字格式
0.25
{:.2%}
25.00%
百分比格式
1000000000
{:.2e}
1.00E+09
指數(shù)記法
13
{:10d}
13
右對齊 (默認(rèn), 寬度為 10)
13
{:<10d}
13
左對齊 (寬度為 10)
13
{:^10d}
13
中間對齊 (寬度為 10)
1.13 可變字符串
在 Python 中,字符串屬于不可變對象,不支持原地修改,如果需要修改其中的值,智能創(chuàng)建新的字符串對象。但是,經(jīng)常我們確實需要原地修改字符串,可以使用 io.StringIO對象或 array 模塊。
import io
s = 'hello, man'
sio = io.StringIO(s)
print(sio)
print(sio.getvalue())
print(sio.seek(7))# 將指針移動到索引7位置
print(sio.write('g'))# 將索引為7的字符修改為g
print(sio.getvalue())# hello, gan
1.14 其他常用方法
a = '''It's been a long day without you my friend,And I'll tell you all about it when I see you again,We've come a long way from where we began,Oh I'll tell you all about it when I see you again'''
print(len(a))# 計算字符串長度
print(a.startswith('I'))# 是否以什么開頭
print(a.endswith('n'))# 是否以什么結(jié)尾
print(a.find('long'))# 從左邊開始查找long第一次出現(xiàn)的位置
print(a.rfind('you'))# 從右邊開始查找you第一次出現(xiàn)的位置
print(a.count('see'))# 統(tǒng)計字符串中see出現(xiàn)的次數(shù)
print(a.isalnum())# 是否全部為數(shù)字或字母
print(a.capitalize())# 將首字母大寫
print(a.title())# 將每個單詞的首字母大寫
print(a.upper())# 全部轉(zhuǎn)化為大寫字母
print(a.lower())# 全部轉(zhuǎn)化為小寫字母
print(a.swapcase())# 將字符串中的大寫字母轉(zhuǎn)化為小寫,小寫轉(zhuǎn)化為大寫
print(a.isalpha())# 檢測字符串是否只由字母組成(含漢字)
print(a.isdigit())# 是否只由數(shù)字組成
print(a.isspace())# 是否為空白字符
print(a.isupper())
print(a.islower())
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的python基本字符_Python基本字符串,基础,之的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux命令行ps1变量_Ubuntu
- 下一篇: 中打开终端_macOS中轻松实现Find