Python學習之路13 字串2

2021-06-29 11:31:02 字數 3745 閱讀 1580

python風格的字串格式操作符。只適用與字串型別,非常類似於c語言中的printf()函式的字串格式化,都是用%,並且支援所有的printf()的格式化操作。

字串格式化符合如下:

%c轉換成字元(ascii碼值,或者長度為一的字串)

%r優先用repr()函式進行字串轉換

%s優先用str()函式進行字串轉換

%d、%i轉換成有符號十進位制

%o轉換成無符號八進位制

%x、%x轉換成無符號十六進製制(xx代表轉換後的十六進製制字元的大小寫)

%e、%e轉成科學計數法

%f  %f轉成浮點型(小數部分自然截斷)

%g  %g%e和%f/%e和%f的簡寫

%%輸出%

格式化操作符輔助指令

python支援兩種格式的輸入引數。第一種是元組,這是一種c printf()風格的轉換引數集;python支援的第二種形式是字典形式。這種形式裡面,鍵是作為格式字串出現,相對應的值作為引數在進行轉化是提供給格式字串。

下面是一些例子:

>>> '%x' % 108

'6c'

>>> '%x' % 108

'6c'

>>> '%#x' % 108

'0x6c'

>>>

>>> '%.2f' % 1234.456789

'1234.46'

>>> '%e' % 1234.456789

'1.234457e+03'

>>> '%g' % 1234.456789

'1234.46'

>>>

>>> '%+d' % 4

'+4'

>>> '%+d' % -4

'-4'

>>> 'host : %s\tport: %d' % ('mars', 80)

'host : mars\tport: 80'

>>> 'ss\t'

'ss\t'

>>> # force on

...

>>> 'there are %(howmany)d %(lang)s quotation symbols' %

'there are 3 python quotation symbols'

>>>

1.2字串模板:更簡單的替代品

在字典形式的格式化中,程式設計師難免會出現遺漏轉換型別符號的錯誤。比如,用了%(lang)而不是%(lang)s。為了保證字串被正確的轉換,程式設計師必須明確的記住轉換型別引數。

新式的字串模板的優勢是不用去記住所有的相關細節,而是像shell語言使用$。

template物件有兩個方法,substitute()和safe_substitute()。前者在key缺少的情況下他會報乙個keyerror的異常出來,而後者在缺少key時,直接原封不動的把字串顯示出來。

>>> from string import template       #匯入template物件

>>> s = template('there are $ $ quotation symbols')

>>>

>>> print s.substitute(lang='python', howmany=3)

there are 3 python quotation symbols

>>> print s.substitute(lang='python')

traceback (most recent call last):

file "", line 1, in file "/usr/lib64/python2.7/string.py", line 172, in substitute

return self.pattern.sub(convert, self.template)

file "/usr/lib64/python2.7/string.py", line 162, in convert

keyerror: 'howmany'

>>> print s.safe_substitute(lang='python', howmany=3)

there are 3 python quotation symbols

>>> print s.safe_substitute(lang='python')

there are $ python quotation symbols

>>>

1.3原始字串操作符(r/r)

原始操作符的目的,是為了對付那些在字串中出現的特殊字元。在原始字串裡,所有的字元都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。

>>> '\n'

'\n'

>>> print '\n'

>>> r'\n'

'\\n'

>>> print r'\n'

\n>>>

1.4 unicode 字串操作符(u/u)

它是用來把標註字串或者是包含unicode字元的字串轉換成完全的unicode字串物件。

內建的cmp()函式根據字串的ascii碼值進行比較

>>> str1 = 'abc'

>>> str2 = 'lmn'

>>> str3 = 'xyz'

>>> cmp(str1, str2)

-1>>> cmp(str3, str1)

1>>> cmp(str2, 'lmn')

0>>>

len()返回字串的字元數。

>>> len('test')

4>>>

max() 和 min() 返回字串中最大和最小的值

>>> max('ad23xy')

'y'>>> min('zyad')

'a'>>>

>>> s = 'foobar'

>>> for i,t in enumerate(s):

... print i, t

...

0 f1 o

2 o3 b

4 a5 r

>>>

>>> s,t = 'foo', 'bar'

>>> zip(s,t)

[('f', 'b'), ('o', 'a'), ('o', 'r')]

>>>

使用給定字串提示使用者輸入並將這個輸入返回,

>>> username = raw_input('enter your name: ')

enter your name: coder

>>> username

'coder'

>>> len(username)

5>>>

python裡面沒有c風格的結束字元nul,你輸入多少個字元,就返回多少個字元。

Python學習之路08 字串

字串是不可變資料型別,建立後不可修改 只能新建乙個字串,用原來的標籤去覆蓋它 使用 或 建立字串 s1 i love you s1 i love you 使用 或 建立跨多行的字串 s2 從前車馬很慢 書信很長 一生只夠愛一人 s2 從前車馬很慢 n書信很長 n一生只夠愛一人 print s2 從前...

13 字串查詢

對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。說明在面試中我是否需要實現kmp演算法?樣例如果 source source 和 target target 返回 1。如果 sou...

13 字串 模式匹配

一般提起字串的相關演算法,就是幾個基本的演算法 賦值strcpy 求長strlen 聯接strcat 比較strcmp和求子串substr。這5個操作相對來說都比較簡單,構成了字串的最小操作集,其他的演算法都可以由這幾個演算法來實現。但是實際應用中,模式匹配index是應用非常廣泛的字串操作,我們傾...