詳解Python核心對(duì)象類型字符串
Python的字符串的特點(diǎn)
- Python與C語言,Java語言都不一樣,沒有單個(gè)字符,只有一個(gè)有一個(gè)字符的字符串。
- 字符串對(duì)象不可修改,屬于不可變類型
- 字符串和列表,元組都從屬于序列這個(gè)對(duì)象類別。所以序列支持的操作,字符串也支持。
- 用單引號(hào)和雙引號(hào)表示都行,并列的字符串串常量會(huì)自動(dòng)合并,不需要顯式的用加號(hào)表示。
- 單雙引號(hào)里面的特殊字符必須用轉(zhuǎn)義序列表示,比如”,',\都需要在前面加個(gè)、,但是在三引號(hào)里面不需要轉(zhuǎn)義。
Python的字符串的支持的基本操作
- 支持序列的操作,比如len(‘a(chǎn)bc')取長(zhǎng)度
- Python不允許混合數(shù)字和字符串的加法,比如9+'3'不會(huì)轉(zhuǎn)成字符串,這點(diǎn)和Java不一樣。
- 分片通過偏移來指定分片的大小,[偏移A:偏移B:偏移C]從左到右偏移為正,從右到左偏移為負(fù)。偏移A省略表示最左端,偏移B省略表示最右端,如[1:]表示從索引為1到最右端。分片創(chuàng)建一個(gè)新的對(duì)象返回,所以用[:]可以實(shí)現(xiàn)拷貝。分片偏移C表示步進(jìn),從左端和右端的區(qū)間復(fù)制索引相差為步進(jìn)的元素,組成新對(duì)象返回。
- 修改字符串會(huì)產(chǎn)生一個(gè)新的字符串對(duì)象,這時(shí)候可能會(huì)有疑問,這樣不是效率很低嗎?在JAVA中確實(shí)是這樣,如果用+號(hào)來合并字符串就會(huì)產(chǎn)生一個(gè)新對(duì)象,所以在JAVA中一般用StringBuilder避免產(chǎn)生過多的對(duì)象,但是在Python中沒被變量引用的對(duì)象會(huì)立即回收掉空間,新對(duì)象會(huì)重用回收的空間。所以效率并不會(huì)很低。
Python的字符串轉(zhuǎn)換
- 數(shù)字與字符串之間的轉(zhuǎn)換:通過內(nèi)置函數(shù)int(‘42'),str(42),float(‘42')之類的來轉(zhuǎn)換
- 字符串與ASCII碼之間的轉(zhuǎn)換:ord(‘323')將字符串轉(zhuǎn)為ASCII碼,chr(23)將ASCII碼轉(zhuǎn)換為字符串
字符串方法
- 修改字符串:通過合并+和分片[:]來修改,另一種是通過字符串的方法來修改。replace(‘goal','str')把字符串中的'goal'替換成'str'。find(‘index')返回字符串'index'開始的索引。list(‘sds')將字符串'sds'轉(zhuǎn)換成列表['s','d','s'],這就變成了可變對(duì)象類型,可以直接對(duì)其進(jìn)行多次修改,再調(diào)用”.join(列表)轉(zhuǎn)換成字符串方法這比上面多次合并或切片效率要高。
- 文本解析:split(”)方法可以將文本切割成列表。
- 其他方法:rstrip()方法清除每行末尾空白,endswith(‘w')判斷是否以'w'結(jié)尾和startswith(‘t')是否以't'開頭。
- 字符串不支持模式,需要使用Python的re標(biāo)準(zhǔn)庫模塊。
字符串格式化
Python支持在字符串放入%d,%s來實(shí)現(xiàn)類型替換,類似于C的printf。在字符串后面添加% 字符串 實(shí)現(xiàn)指定字符串替換,多個(gè)字符串要用()括起來。
基于字典的字符格式化
插入字符串的不再是固定的%d,%s而是%(字典的鍵)。替換的就是字典的值,這樣有一個(gè)好處就是能把整個(gè)字符串中的對(duì)應(yīng)字典鍵的字符串都替換成字典鍵對(duì)應(yīng)的值。
字符串格式化調(diào)用方法
前面的都是通過表達(dá)式來進(jìn)行字符串格式化。這里是通過字符串的方法進(jìn)行格式化。這就和Java的占位符差不多了,template='{0},{1},{2}',template.format('s','d','s')來進(jìn)行格式化。
- Python實(shí)現(xiàn)簡(jiǎn)單文本字符串處理的方法
- Python實(shí)現(xiàn)判斷字符串中包含某個(gè)字符的判斷函數(shù)示例
- Python實(shí)現(xiàn)生成隨機(jī)日期字符串的方法示例
- Python生成8位隨機(jī)字符串的方法分析
- Python實(shí)現(xiàn)判斷一個(gè)字符串是否包含子串的方法總結(jié)
- Python3中的列表,元組,字典,字符串相關(guān)知識(shí)小結(jié)
- python判斷字符串是否是json格式方法分享
- 在python中使用正則表達(dá)式查找可嵌套字符串組
- python去除字符串中的換行符
- Python輸出帶顏色的字符串實(shí)例
- Python實(shí)現(xiàn)字符串反轉(zhuǎn)的常用方法分析【4種方法】
相關(guān)文章
Keras多線程機(jī)制與flask多線程沖突的解決方案
這篇文章主要介紹了Keras多線程機(jī)制與flask多線程沖突的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
TensorBoard 計(jì)算圖的可視化實(shí)現(xiàn)
今天小編就為大家分享一篇TensorBoard 計(jì)算圖的可視化實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python?異之如何同時(shí)運(yùn)行多個(gè)協(xié)程詳解
這篇文章主要為大家介紹了Python?異之如何同時(shí)運(yùn)行多個(gè)協(xié)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
pytorch中.to(device) 和.cuda()的區(qū)別說明
這篇文章主要介紹了pytorch中.to(device) 和.cuda()的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python中利用sorted()函數(shù)排序的簡(jiǎn)單教程
這篇文章主要介紹了Python中利用sorted()函數(shù)排序的簡(jiǎn)單教程,sorted()函數(shù)有返回值,在Python的排序?qū)崿F(xiàn)中發(fā)揮著相當(dāng)重要的作用,需要的朋友可以參考下2015-04-04
Python中Arrow庫的時(shí)間操作技法總結(jié)
Arrow是一個(gè)功能強(qiáng)大、易用且具有優(yōu)雅設(shè)計(jì)的Python日期時(shí)間庫,它建立在Python的datetime模塊之上,旨在彌補(bǔ)datetime模塊在處理日期時(shí)間時(shí)的一些不足之處,下面我們就來了解一下Arrow庫的常見時(shí)間操作吧2023-12-12
Pycharm搭建一個(gè)Django項(xiàng)目的方法步驟
本文主要介紹了Pycharm搭建一個(gè)Django項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

