1. 程式人生 > 其它 >Python 中字串的用法

Python 中字串的用法

在 Python 中,字串屬於不可變物件,不支援原地修改,如果需要修改其中的值,
智慧建立新的字串物件。但是,經常我們確實需要原地修改字串,可以使用 io.StringIO 物件

# 首先匯入模組
import io
# 定義一個變數
s = "hello,world"
sio = io.StringIO(s)
print(sio)    # <_io.StringIO object at 0x00000189978F4678> 列印的結果
print(sio.getvalue())  # 列印的結果是:hello,world
sio.seek(5)     # 第五個後開始替換
sio.write("冰冰")
print(sio.getvalue())   # hello冰冰orld

注意點:
1 字串的本質是:字元序列。Python 的字串是不可變的,不支援單字元型別,單字元也是作為一個字串使用的。
2 Python3 直接支援 Unicode,可以表示世界上任何書面語言的字元。Python3 的字元 預設就是 16 位 Unicode 編碼,ASCII 碼是 Unicode 編碼的子集。
使用內建函式 ord()可以把字元轉換成對應的 Unicode 碼; 使用內建函式 chr()可以把十進位制數字轉換成對應的字元。

3 轉義字元

4 字串複製
>>> a = 'Sxt'*3 >>> a 'SxtSxtSxt
5 不換行列印

print("sxt",end=' ') 
print("sxt",end='##') 
print("sxt")
執行結果: sxt sxt##sxt

6 從控制檯讀取字串 使用 input()從控制檯讀取鍵盤輸入的內容

>>> myname = input("請輸入名字:") 
請輸入名字:小馬哥 
>>> myname '小馬哥'

7 str()實現數字轉型字串

str(5.20) ==> ‘5.20’ 
str(3.14e2)==>’314.0’ 
str(True) ==> ‘True

8 使用[]提取字元
正向搜尋: 最左側第一個字元,偏移量是 0,第二個偏移量是 1,以此類推。直到 len(str)-1 為止。
反向搜尋: 最右側第一個字元,偏移量是-1,倒數第二個偏移量是-2,以此類推,直到-len(str) 為止

>>> a = 'abcdefghijklmnopqrstuvwxyz' 
>>> a 'abcdefghijklmnopqrstuvwxyz' 
>>> a[0] 'a' 
>>> a[3] 'd' 
>>> a[26-1] 'z' 
>>> a[-1]
z' 
>>> a[-26] 'a' 
>>> a[-30] 
Traceback (most recent call last):
 File "<pyshell#91>", line 1, in <module> 
a[-30] IndexError: string index out of range

9 replace()實現字串替換
字串不可改變。但是,我們確實有時候需要替換某些字元。這時,只能通過建立新的字元 串來實現。

>>> a = 'abcdefghijklmnopqrstuvwxyz' 
>>> a 'abcdefghijklmnopqrstuvwxyz' 
>>> a = a.replace('c','高') 
'ab 高 defghijklmnopqrstuvwxyz'

10 字串切片 slice 操作
切片 slice 操作可以讓我們快速的提取子字串。標準格式為: [起始偏移量 start:終止偏移量 end:步長 step]
11 split()分割和 join()合併
split()可以基於指定分隔符將字串分隔成多個子字串(儲存到列表中)。如果不指定分隔 符,則預設使用空白字元(換行符/空格/製表符)

>>> a = "to be or not to be" 
>>> a.split() 
['to', 'be', 'or', 'not', 'to', 'be'] 
>>> a.split('be') 
['to ', ' or not to ', '']

join()的作用和 split()作用剛好相反,用於將一系列子字串連線起來

>>> a = ['sxt','sxt100','sxt200'] 
>>> '*'.join(a) 
'sxt*sxt100*sxt200'

使用字串拼接符+,會生成新的字串物件,因此不推薦使用+來拼接字串。推薦 使用 join 函式,因為 join 函式在拼接字串之前會計算所有字串的長度,然後逐一拷貝, 僅新建一次物件
12 字串駐留機制和字串比較
字串駐留:僅儲存一份相同且不可變字串的方法,不同的值被存放在字串駐留池中。 Python 支援字串駐留機制,對於符合識別符號規則的字串(僅包含下劃線(_)、字母 和數字)會啟用字串駐留機制駐留機制。

>>> a = "abd_33" 
>>> b = "abd_33" 
>>> a is b True 
>>> c = "dd#" 
>>> d = "dd#" 
>>> c is d False 
>>> str1 = "aa" 
>>> str2 = "bb" 
>>> str1+str2 is "aabb"
False 
>>> str1+str2 == "aabb" 
True

13 字串比較和同一性
我們可以直接使用==,!=對字串進行比較,是否含有相同的字元。 我們使用 is / not is,判斷兩個
物件是否同一個物件。比較的是物件的地址,即 id(obj1)是 否和 id(obj2)相等。
14 成員操作符
in /not in 關鍵字,判斷某個字元(子字串)是否存在於字串中。
15 字串常用方法彙總
我們以一段文字作為測試:
a='''我是小馬哥,今年 18 歲了,我在北京尚學堂科技上班。我的兒子叫高洛希,他 6 歲了。我 是一個程式設計教育的普及者,希望影響 6000 萬學習程式設計的中國人。我兒子現在也開始學習編 程,希望他 18 歲的時候可以超過我''


16 去除首尾資訊
我們可以通過 strip()去除字串首尾指定資訊。通過 lstrip()去除字串左邊指定資訊, rstrip()去除字串右邊指定資訊
17 大小寫轉換

18 格式排版

center()、ljust()、rjust()這三個函式用於對字串實現排版。示例如下:
 >>> a="SXT" 
>>> a.center(10,"*") 
'***SXT****'
 >>> a.center(10) 
' SXT ' 
>>> a.ljust(10,"*") 
'SXT*******'

19 其他方法

  1. isalnum() 是否為字母或數字
  2. isalpha() 檢測字串是否只由字母組成(含漢字)。
  3. isdigit() 檢測字串是否只由數字組成。
  4. isspace() 檢測是否為空白符
  5. isupper() 是否為大寫字母
  6. islower() 是否為小寫字母
>>> "sxt100".isalnum() 
True 
>>> "sxt 尚學堂".isalpha() 
True 
>>> "234.3".isdigit() 
False 
>>> "23423".isdigit() 
True 
>>> "aB".isupper() 
False 
>>> "A".isupper() 
True 
>>> "\t\n".isspace() 
True

20 字串的格式化
基本語法是通過 {} 和 : 來代替以前的 % 。 format 函式可以接受不限個引數,位置可以不按順序