標籤:分區 字元 存在 osi art 單詞 row equal tle
3.1 基底字元串操作:所有的標準序列操作(索引,分區,乘法,判斷成員資格,求長度,取最小值,取最大值)對於字串同樣有效。但是,請記住:字串都是不可變的3.2 字串格式化:精簡版字串格式化使用字串格式化操作符,即百分比符號%來實現。%也可以用做莫運算(求餘)操作符。在%的左側放置一個字串(格式化字串),而右側則放置希望被格式化的值。可以使用一個值,如一個字串或者數字,也可以使用多個值的元組或者字典。一般情況下使用元組:
>>> format = "Hello,%s,%s enough for ya?">>> values = (‘world‘,‘Hot‘)>>> print format % valuesHello,world,Hot enough for ya?
注意:1.如果使用列表或者其他序列代替元組,那麼序列會被解釋為一個值。只有元組和字典可以格式化一個以上的值。2.格式化字串的%s部分被稱為轉換說明符,他們標記了需要插入轉換值的位置。s表示值會被格式化為字串----如果不是字串,則會用str將其轉換為字串。3.如果要在格式化字串裡麵包括百分比符號,那麼必須使用%%,這樣python就不會將百分比符號誤認為是轉換說明符了4.如果要格式化實數(浮點數),可以使用f說明轉換說明符的類型,同時提供所需要的精度:一個句點再加上希望保留的小數位元。因為格式化轉換說明符總是以表示類型的字元結束,所以精度應該放在類型字元前面:
>>> format = "Pi with three decimals: %.3f">>> from math import pi>>> print format % piPi with three decimals: 3.142
3.2.1 模版字串string提供另一種格式化值的方法:模版字串。它的工作方式類似於很多UNIX Shell中的變數替換。如下所示:substitute這個模版方法會用傳遞進來的關鍵字foo替換字串中的$foo:
>>> from string import Template>>> s = Template(‘$x,glorious $x!‘)>>> s.substitute(x=‘slurm‘)‘slurm,glorious slurm!‘
如果替換的事單詞的一部分,那麼參數名就必須用括弧括起來,從而準確指明結尾:
>>> s = Template("It‘s ${x}tastic")>>> s.substitute(x=‘slurm‘)"It‘s slurmtastic"可以使用$$插入貨幣符號:
>>> s = Template("Make $$ selling $x!")>>> s.substitute(x=‘slurm‘)‘Make $ selling slurm!‘除了關鍵字參數之外,還可以使用字典提供的索引值對
>>> s = Template(‘A $thing must never $action.‘)>>> d = {}>>> d[‘thing‘] = ‘gentleman‘>>> d[‘action‘] = ‘show his socks‘>>> s.substitute(d)‘A gentleman must never show his socks.‘方法safe_substitute不會因缺少值或者不正確使用$字元而出錯3.3 字串格式化:完整版格式化操作符的右運算元可以是任意類型,如果是元組或映射類型(如字典),那麼字串格式化將有所不同。如果右運算元是元組的話,則其中的每一個元素都會被單獨格式化,每個字都需要一個對應的轉換說明符如果需要轉換的元組作為轉換運算式的一部分存在,那麼必須將它用圓括弧括起來,以避免出錯
>>> ‘%s plus %s equals %s‘ % (1,2,3)‘1 plus 2 equals 3‘>>> ‘%s plus % equals %s.‘ % 1,2,3Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: not enough arguments for format string
3.3.1 基本的轉換說明符基本的轉換說明符包括以下部分。注意,這些項的順序是至關重要的1.%字元:標記轉換說明符的開始2.轉換標誌(可選):“-”表示靠左對齊;“+”表示在轉換值之前要加上加號或減號;""(空白字元)表示正數之前保留空格;0表示轉換值若位元不夠則用0填充3.最小欄位寬度(可選):轉換後的字串至少應該具有該值指定的寬度,如果是*,則寬度會從值元組中讀出4.點(.)後跟精確度(可選):如果轉換的時實數,精確度就表示出現在小數點後的位元,如果轉換的是字串,那麼該數字就表示最大欄位寬度。如果是*,那麼精度將會從元組中讀出5.轉換類型:如下所示
| 轉換類型 |
含義 |
| d,i |
帶符號的十進位整數 |
| o |
不帶符號的八進位 |
| u |
不帶符號的十進位 |
| x |
不帶符號的十六進位(小寫) |
| X |
不帶符號的十六進位(大寫) |
| e |
科學技術法表示的浮點數(小寫) |
| E |
科學技術法表示的浮點數(大寫) |
| f,F |
十進位浮點數 |
| g |
如果指數大於-4或者小於精度值則和e相同,其他情況與e相同 |
| G |
如果指數大於-4或者小於精度值則和e相同,其他情況與E相同 |
| C |
單字元(接收整數或者單字元字串) |
| r |
字串(使用repr轉換任意python對象) |
| s |
字串(使用str轉換任意python對象) |
3.3.2 簡單轉換簡單的轉換隻需要寫出轉換類型,使用起來很簡單:
>>> ‘Price of eggs: %d‘ % 42‘Price of eggs: 42‘>>> ‘Hexadecimal price of eggs: %x.‘ % 42‘Hexadecimal price of eggs: 2a.‘>>> from math import pi>>> ‘Pi: %f...‘ %pi‘Pi: 3.141593...‘>>> ‘Pi: %f...‘ % pi‘Pi: 3.141593...‘>>> ‘Very inexact estimate of pi: %i.‘ % pi‘Very inexact estimate of pi: 3.‘>>> ‘Using str: %s.‘ % 42L‘Using str: 42.‘>>> ‘Using repr: %r.‘ % 42L‘Using repr: 42L.‘
3.3.3 欄位寬度和精度轉換說明符可以包括欄位寬度與精度。欄位寬度是轉換後的值會所保留的最小字元個數,精度(對於數字轉換來說)則是結果中應該包含的小數位元,或者(對於字串轉換來說)是轉換後的值所能包含的最大字元個數。這兩個參數都是整數(首先是欄位寬度,然後是精度),通過點號(.)分隔。雖然兩個都是可選的參數,但是如果只給出精度,就必須包含點號:
>>> ‘%10f ‘ % pi #欄位寬10‘ 3.141593 ‘>>> ‘%10.2f‘ % pi #欄位寬10,精度2‘ 3.14‘>>> ‘%.2f‘ % pi #精度2‘3.14‘>>> ‘%.5s‘ % ‘Guido van Rossum‘‘Guido‘
可以使用*(星號)作為欄位寬度或者精度(或兩者都用*),此時數值會從元組參數中讀出:
>>> ‘%.*s‘ % (5,‘Guido van Rossum‘)‘Guido‘
3.3.4 符號、對齊和用0填充在欄位寬度與精度之前還可以放置一個“標誌”,該標誌可以是零,加號,減號或空格。零表示數字將會用0進行填充。 注意:在010開頭的那個0並不意味著欄位寬度說明符為八位元,他只是個普通的python數值。當使用010作為欄位寬度說明符時,表示欄位寬度為10,並且用0進行填充空位,而不是說欄位寬度為8。
python筆記03:使用字串