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是應用非常廣泛的字串操作,我們傾...