詳解Python核心對象類型字符串
更新時間:2018年02月11日 11:35:54 投稿:laozhang
本篇文章通過理論知識點給大家講述了Python核心對象類型字符串的相關知識內容,對此有興趣的一起學習下。
Python的字符串的特點
- Python與C語言,Java語言都不一樣,沒有單個字符,只有一個有一個字符的字符串。
- 字符串對象不可修改,屬于不可變類型
- 字符串和列表,元組都從屬于序列這個對象類別。所以序列支持的操作,字符串也支持。
- 用單引號和雙引號表示都行,并列的字符串串常量會自動合并,不需要顯式的用加號表示。
- 單雙引號里面的特殊字符必須用轉義序列表示,比如”,',\都需要在前面加個、,但是在三引號里面不需要轉義。
Python的字符串的支持的基本操作
- 支持序列的操作,比如len(‘abc')取長度
- Python不允許混合數字和字符串的加法,比如9+'3'不會轉成字符串,這點和Java不一樣。
- 分片通過偏移來指定分片的大小,[偏移A:偏移B:偏移C]從左到右偏移為正,從右到左偏移為負。偏移A省略表示最左端,偏移B省略表示最右端,如[1:]表示從索引為1到最右端。分片創(chuàng)建一個新的對象返回,所以用[:]可以實現拷貝。分片偏移C表示步進,從左端和右端的區(qū)間復制索引相差為步進的元素,組成新對象返回。
- 修改字符串會產生一個新的字符串對象,這時候可能會有疑問,這樣不是效率很低嗎?在JAVA中確實是這樣,如果用+號來合并字符串就會產生一個新對象,所以在JAVA中一般用StringBuilder避免產生過多的對象,但是在Python中沒被變量引用的對象會立即回收掉空間,新對象會重用回收的空間。所以效率并不會很低。
Python的字符串轉換
- 數字與字符串之間的轉換:通過內置函數int(‘42'),str(42),float(‘42')之類的來轉換
- 字符串與ASCII碼之間的轉換:ord(‘323')將字符串轉為ASCII碼,chr(23)將ASCII碼轉換為字符串
字符串方法
- 修改字符串:通過合并+和分片[:]來修改,另一種是通過字符串的方法來修改。replace(‘goal','str')把字符串中的'goal'替換成'str'。find(‘index')返回字符串'index'開始的索引。list(‘sds')將字符串'sds'轉換成列表['s','d','s'],這就變成了可變對象類型,可以直接對其進行多次修改,再調用”.join(列表)轉換成字符串方法這比上面多次合并或切片效率要高。
- 文本解析:split(”)方法可以將文本切割成列表。
- 其他方法:rstrip()方法清除每行末尾空白,endswith(‘w')判斷是否以'w'結尾和startswith(‘t')是否以't'開頭。
- 字符串不支持模式,需要使用Python的re標準庫模塊。
字符串格式化
Python支持在字符串放入%d,%s來實現類型替換,類似于C的printf。在字符串后面添加% 字符串 實現指定字符串替換,多個字符串要用()括起來。
基于字典的字符格式化
插入字符串的不再是固定的%d,%s而是%(字典的鍵)。替換的就是字典的值,這樣有一個好處就是能把整個字符串中的對應字典鍵的字符串都替換成字典鍵對應的值。
字符串格式化調用方法
前面的都是通過表達式來進行字符串格式化。這里是通過字符串的方法進行格式化。這就和Java的占位符差不多了,template='{0},{1},{2}',template.format('s','d','s')來進行格式化。
相關文章
pytorch中.to(device) 和.cuda()的區(qū)別說明
這篇文章主要介紹了pytorch中.to(device) 和.cuda()的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

