亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python字符串常見使用操作方法介紹

 更新時間:2022年03月18日 09:45:15   作者:Python-派大星  
本文介紹python字符串使用方法,Python最常見數(shù)據(jù)類型就是字符串,無論哪種編程語言,字符串無處不在,比如從用戶那里讀取字符串,并將字符串打印到屏幕顯示出來,字符串是一種數(shù)據(jù)結(jié)構(gòu),下文詳細(xì)內(nèi)容介紹需要的朋友可以參考一下

1.字符串的駐留機制

字符串:

在Python中字符串是基本的數(shù)據(jù)類型,是一個不可變的字符序列

2.什么叫字符串的駐留機制

僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串的駐留池中,python的駐留機制對相同的字符串只保留一份拷貝,后續(xù)創(chuàng)建相同字符串時,不會開辟新空間,二十八該字符串的地址賦給新創(chuàng)建的變量

a='Python'
b="Python"
c='''Python'''
d="""Python"""
#輸出變量且查看變量地址,發(fā)現(xiàn)四個變量存儲的字符串的地址都是一樣的,因為字符串的駐留機制,字符串定以后,再有其他變量定義這個字符串,將不會開辟新的空間,而是繼續(xù)沿用這個字符串的空間
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))

駐留機制的幾種情況(在命令行交互模式中,而不是PyCharm):

  • 1.字符串的長度為0或1時
  • 2.符合標(biāo)識符的字符串會產(chǎn)生駐留機制(字符串的標(biāo)識符,字母數(shù)字下劃線1)
  • 3.字符串只在編譯時進(jìn)行駐留而非運行時
  • 4.[-5,256]之間的整數(shù)數(shù)字

sys中的intern方法強制2個字符串指向同一個對象
PyCharm對字符串進(jìn)行了優(yōu)化處理

例:

import sys
#兩個不符合駐留機制的字符串
a="abc%"
b="abc%"
print(a is b ) ?#False
a=sys.intern(b) #強制讓a和b在同個位置存放駐留
print(a is b) ? #True

3.字符串駐留機制的優(yōu)缺點

  • 1.當(dāng)需要值相同的字符串時,可以直接從字符串池例拿來使用,避免頻繁的創(chuàng)建和銷毀,提升效率和節(jié)約內(nèi)存,因此拼接字符串和修改字符串是會比較印象性能的
  • 2.在需要進(jìn)行字符串拼接是建議是用str類型的join方法,而非+,應(yīng)為join()方法是先計算出所有字符串中的長度在拷貝

值new一次對象,效率要比"+"效率高

4.字符串的查詢操作的方法

查詢方法:

  • index()  查找子串substr第一次出現(xiàn)的位置,如果查找的子串不存在時,則拋出ValueError
  • rindex() 查找子串substr最后一次出現(xiàn)的位置,如果查找子串不存在時,則拋出ValueError
  • find()   查找子串substr第一次出現(xiàn)的位置,如果查找的子串不存在時,則拋出-1
  • rfind()  查找子串substr最后一次出現(xiàn)的位置,如果查找子串不存在時嗎,則返回-1

建議使用find或者rfind查找字符串

s="hello,hello"
print(s.index("lo")) ? #查找lo在字符串中第一次出現(xiàn)的位置,返回值是3
print(s.find("lo")) ? ? #查找lo在字符串中第一次出現(xiàn)的位置,返回值是3
print(s.rindex("lo")) ? #查找lo在字符串中最后一次出現(xiàn)的位置,返回值是3
print(s.rfind("lo")) ? ?#查找lo在字符串中最后一次出現(xiàn)的位置,返回值是3
?
# print(s.index("k")) ? ? #查找的字符在字符串中不存在,報錯,返回ValueError: substring not found
print(s.rfind("k")) ? ? ##查找的字符在字符串中不存在,返回-1,不報錯

4.1字符串的大小寫轉(zhuǎn)換操作的方法

大小寫轉(zhuǎn)換:

  • upper()把字符串中所有的字符都轉(zhuǎn)換成大寫字符
  • lower()把字符串中所有的字符都轉(zhuǎn)成小寫字母
  • swapcase()把字符串中所有大寫字母轉(zhuǎn)成小寫字母,把所有小寫字符都轉(zhuǎn)成大寫字母
  • capitalize()把第一個字符轉(zhuǎn)換成大寫,把其余字符轉(zhuǎn)換成小寫
  • title()把每個單詞的第一個字符轉(zhuǎn)換成大寫,把每個單詞的剩余字符轉(zhuǎn)換為小寫

使用函數(shù)轉(zhuǎn)換后,會產(chǎn)生新的字符串對象,原字符串不變,使用函數(shù)時需要賦值給新的變量,即使轉(zhuǎn)換后和原字符串一樣,也一樣會產(chǎn)生新的對象

h="hello,python"
h.upper() ? ? #將字符串變?yōu)榇髮?,未賦值給其他變量,返回的時hello,python
print(h)
z=h.upper() ? ?#返回值HELLO,PYTHON
print(z)

4.2字符串內(nèi)容對其操作和方法

字符串對齊:

  • center()居中對齊,第1個參數(shù)指定寬度,第2個參數(shù)指定填充符,第2個參數(shù)是可選的,默認(rèn)是空格,如果設(shè)置寬度小于實際寬度則則返回原字符串
  • ljust()左對齊,第1個參數(shù)指定寬度,第2個參數(shù)指定填充符,第2個參數(shù)是可選的,默認(rèn)是空格如果設(shè)置寬度小于實際寬度則則返回原字符串
  • rjust() 右對齊,第1個參數(shù)指定寬度,第2個參數(shù)指定填充符,第2個參數(shù)是可選的,默認(rèn)是空格如果設(shè)置寬度小于實際寬度則則返回原字符串
  • zfill() 右對齊,左邊用0填充,該方法只接收一個參數(shù),用于指定字符串的寬度,如果指定的寬度小于等于字符串的長度,返回字符串本身

居中對齊center()第一個參數(shù)指定長度,第二個參數(shù)指定填充物,默認(rèn)填充物是空格,設(shè)定寬度小于原字符串,則返回元字符串

print(s.center(20,"*")) ? ? ? ?#返回值****hello,hello*****
print(s.center(10)) ? ? #返回值hello,hello、

4.3判斷字符串的方法

  • isidentifier() :判斷指定的字符串是不是合法的標(biāo)識符
  • isspace(): 判斷指定的字符串是否全部由空白字符組成(回車、換行,水平制表符)
  • isalpha():判斷指定的字符串是否全部由字母組成
  • isdecimal(): 判斷指定字符串是否全部由十進(jìn)制的數(shù)字組成
  • isnumeric():判斷指定的字符串是否全部由數(shù)字組成
  • isalnum():判斷指定字符串是否全部由字母和數(shù)字組成

字符串替換:

replace():第一個參數(shù)指定被替換的子串,第2個參數(shù)指定替換子串的字符串,
該方法返回替換后得到的字符串,替換前的字符串不發(fā)生變化,調(diào)用該方法時可以通過第3個參數(shù)指定最大替換次數(shù)

字符串的合并:

join():將列表或元組中的字符串合并成一個字符串

tihuan="hello,python"
tihuan1=tihuan.replace("hello","Hi")
print(tihuan) #返回值hello,python 使用該函數(shù),之前的字符串不會發(fā)生變化,所以需要賦值給新的變量,才會發(fā)生變化
print(tihuan1) #返回值 ?Hi,python
?

tihuan2="hello,hello,hello,hello,python"
tihuan3=tihuan2.replace("hello","Hi",2) ? #把hello替換成Hi,,只替換2個
print(tihuan3) ? #返回值Hi,Hi,hello,hello,python

4.4字符串的比較操作

運算符:>,>=,<,<=,==,!=

比較規(guī)則:首先比較兩個字符串中的第一個字符,如果相等則繼續(xù)比較下一個字符,
依次比較下去,直到兩個字符串中的字符不相等時,其比較結(jié)果就是兩個字符串的比較結(jié)果,兩個字符串中的所有后續(xù)字符將不再被比較

比較原理:兩上字符進(jìn)行比較時,比較的是其ordinal value(原始值),調(diào)用內(nèi)置函數(shù)ord可以得到指定字符的ordinal value。
與內(nèi)置函數(shù)ord對應(yīng)的是內(nèi)置函數(shù)chr,調(diào)用內(nèi)置函數(shù)chr時指定 ordinalvalue 可以得到其對應(yīng)的字符

?#例:比較字符串,使用函數(shù)ord()
print("apple">"app") ?#True
print("apple">"banana") #False
print(ord("a"),ord("b")) ? #a的原始值是97,b的原始值是98
print("a">"b") #False
print("c">"b") #True,c的原始值是99
print(ord("華")) #華的原始值是21326
#print(ord("hua")) ?#報錯:TypeError ? 查看原始值的函數(shù)只能查看一個字符串,不能查看多個
?
?
#查看原始值所對應(yīng)的字符串,使用函數(shù)chr()
print(chr(101)) ?#e
print(chr(102)) ?#f
print(chr(21326)) ?#華

綜上所述:我們得出了一個程序員表白方式

計算出這句話的原始值:

print(ord("我"),ord("喜"),ord("歡"),ord("你")) ? #返回值:25105 21916 27426 20320
#查看原始值所對應(yīng)的字符串
p=chr(25105),chr(21916),chr(27426),chr(20320)
print(p) ?#返回值('我', '喜', '歡', '你')
print(chr(25105),chr(21916),chr(27426),chr(20320)) ? #返回值:我 喜 歡 你

字符串的切片操作:
 

str[start:end:step]

字符串是不可變類型:

  • 1.不具備增刪改等操作
  • 2.切片操作將產(chǎn)生新的對象
h e l l o , p y t h o n ? ? #字符串
0 1 2 3 4 5 6 7 8 9 10 11 ? #索引
st="hello,python"
print(st[:5]) ?#由于沒有指定起始位置,所以輸出從索引0到5的字符串,返回值hello
print(st[6:]) ?#由于沒有指定結(jié)束位置,所以輸出索引為6之后的字符串python
st1=st[:5]
st2=st[6:]
st3="!"
newstr=st1+st3+st2
print(newstr) ?#將字符串相加,返回值是hello!python
?
#切片完整寫法
print(st[1:5:1]) ?#從索引為1的字符開始切到字符串為5的字符結(jié)束,步長為1,返回值是ello
print(st[0:5:2]) #從索引0開始切到索引11的元素,步長為2,返回值hlo
print(st[::2]) ? #不寫起始和結(jié)束,只寫步長,就默認(rèn)從0開始,到末尾結(jié)束,返回值hlopto
print(st[::-1]) ?#默認(rèn)從字符串最后一個元素開始,到第一個元素結(jié)束,因為步長是負(fù)數(shù),往左輸出,返回值nohtyp,olleh
print(st[-6::1]) #從索引為-6的元素開始,步長為正數(shù),所以向右輸出,返回值是python

5.格式化字符串

格式化字符串的兩種方式:

第一種:   %作為占位符   (%為固定符號,s、i、d、f為實際值)
%s     字符串
%i或%d  整數(shù)
%f     浮點數(shù)

例:

"我的名字叫:%s,今年%d歲了"

第二種:{}作為占位 ({}第一個元素是填寫需要占位的元素索引,第二個是填寫保留幾位數(shù)。例;{0:3})填寫索引為0的元素,并保留3位數(shù)

例:

我的名字叫{0},今年{1}歲了,我真的叫{0},format(name,age)  
{}里填數(shù)字就代表format里元素的索引,format里的元素會按{}里的索引填充

name="張三"
age=20
print("大家好,我叫%s,今年%d歲"%(name,age)) ?#大家好,我叫張三,今年20歲
print("大家好,我叫%s,今年%d歲"%("王五",21)) ?#大家好,我叫王五,今年21歲
#name1=input("輸入你的名字:")
#age1=input("輸入你的歲數(shù)")
#print("我的名字是{0},歲數(shù)是{1},別人都叫我{0}".format(name1,age1))
#返回值是我的名字是小華,歲數(shù)是20,別人都叫我小華
?
#沒有指明格式化字符串,默認(rèn)這句就是字符串,不會格式化,返回值我的名字是{name},名字是{age}
print("我的名字是{name},名字是{age}")
?
#f-string使用f指明要格式化字符串,返回值是我的名字是張三,名字是20
print(f"我的名字是{name},名字是{age}")
?
?
print("%d"%99) ? #99
print("%10d"%99) ? # ? ? ? ?99 ? #10表示寬度
print("023456789") #023456789
print("%f"%3.1415926) #3.141593
print("%10.3f"%3.1415926) ?# ? ? 3.142,%10.3f表示輸出3位小數(shù),并保持10個寬度
print("%.3f"%3.1415926) ?#.3表示保留3位小數(shù),返回值是3.142
print("%d"%3444.1415926) ?#保留整數(shù),3444
?
?
print("{0:.3}".format(3.1415926)) ?#{0:.3}表示存放索引為0的元素,并保留3位數(shù),返回值3.14
print("{:.3f}".format(3.1415926)) ?#如果元素較少,不重復(fù)使用,第一個元素索引的位置可以省略,.3f表示只保留3位小數(shù),返回值3.14
print("{:10.3f}".format(3.1415926)) ? #同時設(shè)置寬度和精度,寬度是時,精度是保留3位小數(shù),返回值是 ? ? 3.142

6.字符串的編碼轉(zhuǎn)換

字符串在傳輸中會被編碼為二進(jìn)制在計算機之間傳輸,傳輸?shù)搅硪慌_計算機之后,數(shù)據(jù)將會被解碼成可以顯示的字符串

編碼與解碼的方式:

編碼:將字符串轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)(bytes)
解碼:將bytes類型的數(shù)據(jù)轉(zhuǎn)換成字符串類型

#編碼需要用到(encoding)
s="舉頭望明月"
print(s.encode(encoding="GBK")) ? #在GBK這種編碼格中,一個中文占兩個字節(jié)
#b'\xbe\xd9\xcd\xb7\xcd\xfb\xc3\xf7\xd4\xc2'
?
print(s.encode(encoding="UTF-8")) #在UTF-8這種編輯格式中,一個中文占三個字節(jié)
#b'\xe4\xb8\xbe\xe5\xa4\xb4\xe6\x9c\x9b\xe6\x98\x8e\xe6\x9c\x88'
?
#解碼(需要用到decode函數(shù))
byte1=s.encode(encoding="GBK") ? #把s變量里的內(nèi)容編碼成GBK格式,并賦值給byte1
print(byte1.decode(encoding="GBK")) ?#把byte1變量里的GBK格式的編碼內(nèi)容解碼,返回出舉頭望明月
?
byte2=s.encode(encoding="UTF-8") ?#把s變量里的內(nèi)容編碼成UTF-8格式,并賦值給byte2
print(byte2.decode(encoding="UTF-8")) ?#把byte2變量里的UTF-8格式的編碼內(nèi)容解碼,返回出舉頭望明月
?
#嘗試使用GBK格式的編碼內(nèi)容,再使用UTF-8來解碼內(nèi)容
byte1=s.encode(encoding="GBK")
print(byte1.decode(encoding="UTF-8"))
#報錯UnicodeDecodeError: ,編碼格式與解碼格式不符,所以無法解碼
#編碼和解碼必須使用同一種格式,否則無法解碼

到此這篇關(guān)于python字符串的使用方法介紹的文章就介紹到這了,更多相關(guān)python字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Async IO在Python中進(jìn)行異步編程的步驟詳解

    使用Async IO在Python中進(jìn)行異步編程的步驟詳解

    許多程序員都熟悉編寫順序(同步)代碼,在異步世界中,事件的發(fā)生獨立于主程序流程,異步編程范例有助于并發(fā)執(zhí)行這些任務(wù),并確保您可以克服等待時間并更有效地使用資源,本文給大家介紹了使用Async IO在Python中進(jìn)行異步編程,需要的朋友可以參考下
    2023-11-11
  • K-means聚類算法介紹與利用python實現(xiàn)的代碼示例

    K-means聚類算法介紹與利用python實現(xiàn)的代碼示例

    K-means聚類算法(事先數(shù)據(jù)并沒有類別之分!所有的數(shù)據(jù)都是一樣的)是我們大家應(yīng)該都聽過的一種算法,下面這篇文章主要給大家介紹了關(guān)于K-means聚類算法的基礎(chǔ)知識與利用python如何實現(xiàn)該算法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • CentOS 7 安裝python3.7.1的方法及注意事項

    CentOS 7 安裝python3.7.1的方法及注意事項

    這篇文章主要介紹了CentOS 7 安裝python3.7.1的方法,文中給大家提到了注意事項,需要的朋友可以參考下
    2018-11-11
  • 深入理解Django-Signals信號量

    深入理解Django-Signals信號量

    這篇文章主要介紹了深入理解Django-Signals信號量,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • set在python里的含義和用法

    set在python里的含義和用法

    在本篇內(nèi)容中我們給大家整理了關(guān)于set在python里的用法含義等相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-06-06
  • 基于python二叉樹的構(gòu)造和打印例子

    基于python二叉樹的構(gòu)造和打印例子

    今天小編就為大家分享一篇基于python二叉樹的構(gòu)造和打印例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python如何在DataFrame增加數(shù)值

    Python如何在DataFrame增加數(shù)值

    這篇文章主要介紹了Python如何在DataFrame增加數(shù)值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python 利用OpenCV給照片換底色的示例代碼

    Python 利用OpenCV給照片換底色的示例代碼

    這篇文章主要介紹了Python 利用OpenCV給照片換底色,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于Python中Flask全局異常處理流程詳解

    關(guān)于Python中Flask全局異常處理流程詳解

    Flask是一個基于Python的Web框架,它提供了全局異常處理的機制來捕獲和處理應(yīng)用程序中的異常,本文將詳細(xì)介紹Flask的全局異常處理,并提供相應(yīng)的代碼示例,需要的朋友可以參考下
    2023-06-06
  • Python的消息隊列包SnakeMQ使用初探

    Python的消息隊列包SnakeMQ使用初探

    使用消息隊列在數(shù)據(jù)的通信中擁有很多優(yōu)點,SnakeMQ是一個開源的用Python實現(xiàn)的跨平臺MQ庫,well,Python的消息隊列包SnakeMQ使用初探,here we go:
    2016-06-06

最新評論