python學習之字串 上

2022-05-19 06:09:57 字數 3880 閱讀 7854

字串

python 的字串被劃歸為不可變序列這一類別,意味著這些字串所包含的字元存在從左至右的位置順序,並且他們不可以在原處修改.

字串常量

單引號  'spam'

雙引號  "spam"

三引號   '''...spam...'''   ""...spam...""

轉義字元 "s\tp\na\om"

raw字串:r"c:\new\test.spam"

單雙引號字串是一樣的

在python字串中,單引號和雙引號字元使可以互換的.

用轉義序列代表特殊字元

\\        反斜槓(\)

\'        單引號(')

\"        雙引號(")

\a        響鈴

\b        倒退

\f        換頁

\n        換行

\r        返回

\t        水平製表符

\v        垂直製表符

\n        unicode資料庫id

\uhhhh        unicode 16為十六進製制數

\uhhhh        unicode 32位十六禁止數

\xhh        十六進製制

\ooo        八進位制

\0        null

\other        不轉義

raw 字串抑制轉義

例如:myfile = open('c:\new\test.dat','w')

這裡的\t會被製表符所代替,導致錯誤

這正式使用raw字串所要解決的問題,如果字母r出現在字串的第乙個引號的前面,它將會關閉轉義機制,這個結果就是python會將反斜槓作為常量來保持,因此為了避免

這種檔名的錯誤,記得在字串前面增加r

myfile = open(r'c\new\test.dat','w')

還有一種辦法,因為兩個反斜槓是乙個反斜槓的轉義序列,可以如下

myfile = open('c:\\new\\test.dat','w')

實際應用中的字串

基本操作:

python

>>>len("abc")

3>>>'abc'+'def'    字串合併

'abcdef'

>>>'ni!'*4    字串重複

'ni!ni!ni!ni!'

>>>myjob = "hacker"

>>>for c in myjob:

print(c,end='');

h a c k e r

>>>'k' in myjob

true

>>>'z' in myjob

false

>>>'spam' in 'abcdspamdef'

true

字串的索引和分片

索引:s[i] 獲取特定偏移的元素

--- 第乙個元素的偏移為0

--- 負偏移索引意味著從最後或者右邊反向開始計數

---s[0] 獲取了第乙個元素

---s[-2] 獲取了倒數第二個元素

分片:s[i:j] 提取對應的部分作為乙個序列

---上邊界並不包含在內

---分片的邊界預設為0和序列的長度,如果沒有給出的話,

---s[1:3]獲取了從偏移為1的元素,知道但不包括偏移為3的元素

---s[1:] 獲取了從偏移為1知道末尾之間的元素

---s[:3]獲取了從偏移為0知道但是不包括偏移為3之間的元素

---s[:-1]獲取了從偏移為0知道但是不包括最後乙個元素之間的元素

---s[:]獲取了從偏移0到末尾之間的元素

擴充套件分片:第三個限制值 步長

s[i:j:k] 從i到j 每隔k個元素取一次

>>>s = "abcdefghmm"

>>>s[1:10:2]

'acegm'

>>>s[::2]

'acegm'

也可以使用負數作為步長

>>>s = "hello"

>>>s[::-1]

'olleh'

通過乙個負數步長,,兩個邊界的意義實際上進行了翻轉

分片s[5:1:-1] 的翻轉順序獲取從2到5的元素

>>>s = "abcdefg"

>>>s[5:1:-1]

'fdec'

字串轉換工具

在python中不能夠讓數字和字串相加,即使字串看起來像是數字也不可以,

>>>'42'+1

出錯int函式可以講字串轉換成數字,

str函式可以將數字轉換成字串

float 函式可以講字串轉換成數字

字串**轉換

同樣是轉換,單個字元可以通過將其傳給內建的ord函式轉換其對應的ascll碼,這個函式實際上返回的是這個字元在記憶體中對應的字元的二進位制.chr函式會執行相反的操作,獲取ascll碼將其轉換成對應的字元

>>> ord('s')

115>>>chr(115)

's'int('1101',2)

13bin(13)

'0b1101'

修改字串

//合併

s = s+'spam'

>>>s

'spamspam!'

>>>s = s[:4]+'burger'+s[-1]

>>>s

'spamburger!'

//替換

>>>s = 'splot'

>>>s = s.replace('pl','pamal',1) 這裡的1表示只替換一次

>>>s

'spamalot'

//格式化

>>>'that is %d %s bird!'% (1,'dead')

that is 1 dead bird

>>>'that is bird!'.format(1,'dead')

that is 1 dead bird

//尋找

>>>s = "abcedef"

>>>where = s.find('ce')

>>>where

3//list

>>>s = ['spam']

>>>l = list(s)

>>>l

['s','p','a','m']

//講乙個list變為字串

>>>s = ''.join(l)

>>>s

'spam'

//拼多個字串

>>>'spam'.join(['eggs','sausage','ham'])

'eggsspamsausagespamhamspam'

字串的文字解析

>>>line = 'aaa bbb ccc'

>>>cols = line.split()

>>>cols

['aaa','bbb','ccc']

>>>line = 'bob,hacker,40'

>>>line = line.split(',')

['bob','hacker','40']

>>>line = 'iamspamaspamnumber'

>>>line = line.split('spam')

>>>line

['iam','a','number']

java學習之字串(上)

string greeing hello string s greet.substring 0,3 建立乙個由字元 hel 組成的字串 string expletive expletive string pg13 deleted string message expletive pg13 上述 將 ...

python 位元組字串上的字串操作

問題 想在位元組字串上執行普通的文字操作 比如移除,搜尋和替換 解決方案 1 位元組字串同樣也支援大部分和文字字串一樣的內建操作。比如 data b hello world data 0 5 b hello data.startswith b hello true data.split b hell...

字元陣列與字串(上)

一 統計空格 解決問題 輸入一行字元 字元個數不多於80 統計其中空格的個數 include intmain void printf 空格數為 d n count return0 二 一維字元陣列與字串 一維字元陣列的定義 引用 初始化與其他型別的一維陣列一樣。定義乙個含80個字元型元素的陣列str...