Python核心資料型別 字串

2022-04-05 17:12:54 字數 3652 閱讀 5002

python的字串是乙個有序的字元集合,有序指的是可以通過偏移來訪問每個字元,每個字元有嚴格的從左到右的位置順序,類似於陣列。python中沒有單個字元的型別(c語言中的char),取而代之的是使用乙個字元的字串。字串是不可變序列,不可以在原處修改,也就是無法執行類似str[0] = 'x'的操作,而執行合併(str1 + str2)、修改字串(str.replace(..))及分片(s[1:3])等字串操作都是生成新的物件。

單引號括起來

>>> 'spa"m'    #不可寫成'spa'm',這變成'spa' + m',第2個不完整。

'spa"m'

>>> 'spa''m' #'spa' + 'm'

'spam'

雙引號括起來(不是兩個單引號)

>>> "spa'm"

"spa'm"

三引號括起來(三個單引號或三個雙引號)

>>> '''spam'''

'spam'

>>> """spam"""

'spam'

只要不引起歧義,可以在字串中直接嵌入單引號(')或雙引號(")而不用通過轉義字元(\',\")。

還可以利用三引號(三個單引號或三個雙引號)來注釋**塊

x = 1

'''import os

print os.getcwd()

'''y = 2

轉義字元

說明

\忽視(連續),如果語句太長一行寫不下,用\可以接到下一行。

\\反斜線(保留\)

\'單引號(保留')

\」雙引號(保留」)

\a響鈴

\b倒退

\f換頁

\n換行

\r回到行首

\t水平製表符

\v垂直製表符

\xhh

十六進製制值,如\x00,\x08,\xff,h對應十六進製制數。

\0oo

十六進製制值,如\000,\077,o對應八進位制數。

\0null(不是字串結尾),等價於\x00,python中不是用\0來判斷字串結尾,

每個字串都存有字串的長度,通過計數來判斷是否到達結尾。

raw字串:如果字母r(大寫或小寫)出現在字串的第乙個引號前面,它將會關閉轉義機制

>>> myfile = open(r'c:\new\text.dat', 'w') 

>>> myfile = open('c:\new\text.dat', 'w') #出錯,因為\n和\t是轉義字元,解析錯誤。

unicode字串:在第乙個引號前增加字母u(大寫或小寫),unicode字串每個字元使用2個位元組編碼,可以支援更豐富的字符集。

>>> u'spam'

u'spam'

>>> 'eggs' + u'spam' #混合資料型別,自動轉換成unicode

u'eggsspam'

>>> str(u'spam') #轉換成正常字串

'spam'

>>> unicode('spam') #轉換成unicode字串

u'spam'

允許混合row和unicode字串,但是u必須在r前面(ur'.....')

>>> ur'c:\new\txt.dat'

u'c:\\new\\txt.dat'

字串格式化語法:包含格式化**的要格式化的字串

%要格式化的物件(多個的話,放在括號內)

格式化**

說明

%s字串(或任何物件),不是字串會自動轉成字串

%r字串,但使用repr,而不是str,repr顯示的是直譯器可讀的,str顯示的是人可讀的。也就是說repr是面向直譯器的,str是面向人的。在大部分情況下兩者顯示的值是相同的,但在一些特定的物件是不同的,如字串。str('a') == 'a',repr('a') == "'a'"  ('a'由雙引號「括起來)

%c字元

%d有符號整數(十進位制)

%i整數

%u無符號整數(十進位制)

%o八進位制整數

%x十六進製制整數

%x十六進製制整數,但列印時大寫

%e浮點數,科學計數法表示

%e浮點數,科學計數法表示,使用大e

%f浮點數

%g浮點數(根據值大小採用%e或%f)

%g浮點數(根據值大小採用%e或%f)

%%百分號標記

>>> '%d %s %d you' % (1, 'spam', 4)

'1 spam 4 you'

>>> '%s %s %s' % (42, 3.14, [1, 2, 3])

'42 3.14 [1, 2, 3]'

更高階的格式化,左側的格式化**:%[(name)][flags][width][.precision]code

>>> x = 123

>>> '%d.%5d.%-5d.%05d' % (x, x, x, x)

'123. 123.123 .00123'

>>> x = 1.23

>>> '%-5.2f.%05.2f.%+06.1f' % (x, x, x)

'1.23 .01.23.+001.2'

>>> '%(n)d %(3)s' %

'1 spam'

單個字元轉換

>>> ord('a')  #將字元轉換成對應的ascii碼

97>>> chr(97) #將ascii碼轉換成對應的字元

'a'

replace方法:s.replace(源字串, 目的字串, n),第三個引數為可選,表示將第n個出現源字串替換成目的字串,預設為所有。

>>> s = 'aba'

>>> s.replace('a', 'c') #將所有的'a'替換成c

'cbc'

>>> s.replace('a', 'c', 1) #將第乙個'a'替換成c

'cba'

join方法:分隔字串.join(字串列表),將字串列表串在一起,成為乙個新的字串,用分隔字串隔開。

>>> '123'.join(['eggs', 'ham'])

'eggs123ham'

>>> 'x'.join(['a', 'b', 'c'])

'axbxc'

split方法:s.split(分隔字串),分隔字串為可選引數,預設為空格,返回乙個字串列表。

>>> s = 'a b c'

>>> s.split()

['a', 'b', 'c']

>>> s = 'a,b,c'

>>> s.split(',')

['a', 'b', 'c']

>>> s = 'axxbxxc'

>>> s.split('xx')

['a', 'b', 'c']

Python基礎 核心資料型別 序列 字串

序列 容器是包含其他物件的任意物件,序列及對映 字典 是常見的容器,序列中的每個元素都對應乙個位置,而對映中的元素都對應乙個鍵。集合 set 也是容器的一種。序列是python中的最基本的資料結構。序列中的每個元素被分配乙個序號,或者稱為索引,和c語言中的陣列一樣,下標從0開始。python包含6種...

python核心資料型別

序列運算子 本文採用版本pyton3.5 數字 int,long,float,complex,bool 字元 str,unicode 列表 list 字典 dict 元組 tuple 檔案 file 其他型別 集合 set frozenset,類型別,none str repr 或format 將非...

Python核心資料型別 概覽

python的核心資料型別有 數字,字串,列表,字典,元組,檔案等。物件型別 例子 可變性 數字345,3.45,345l,3 4j 不可變字串 spam eggs 不可變列表 1,a b 2 可變字典 可變元組 1,2,spam 不可變檔案 myfile open data r w 內建函式var...