<<Python基礎教程>>學習筆記 | 第03章 | 字串,python第03章

來源:互聯網
上載者:User

<<Python基礎教程>>學習筆記 | 第03章 | 字串,python第03章

第03章: 使用字串

------

支援的操作

  • 索引
  • 切片
  • 增加元素
  • 刪除元素
  • 更新元素
  • 尋找元素(檢查某個元素是否是序列中的一員)
  • 序列長度 
  • 最大值
  • 最小值
  • 其他內建函數
>>> website='http://www.python.org'>>> website[-3:]='com'   #此操作不合法,因為字串是不變,不能做修改Traceback (most recent call last):  File "<pyshell#162>", line 1, in <module>    website[-3:]='com'TypeError: 'str' object does not support item assignment
------

字串格式化: 
%s:轉換說明符 元祖

#字元型>>> str1 = "Hello, %s. %s enough for you ya?">>> val1 = ('Jerry','Hot')>>> print str1 % val1Hello, Jerry. Hot enough for you ya?#浮點型>>> format = "PI with three decimals: %.3f">>> from math import pi>>> print format % piPI with three decimals: 3.142Note: 1. 使用列表的話,序列會理解成一個值,只有元祖和字典可以格式化一個以上的值2. 百分比符號: %%模板字串#類似於linux中的變數替換,Template,substitute(將傳的參數進行轉換)>>> s = Template('$x,glorious $x!')>>> s.substitute(x='slurm')'slurm,glorious slurm!'#如果是單詞的一部分的話,用{}括起來>>> s = Template('I love ${x}rry!')>>> s.substitute(x='She')'I love Sherry!'#如果是美元, 注意用$$來表示美元符,safe_substitute不會因缺少值或美元符而報錯>>> s = Template('Using $$ buy ${x}!')>>> s.substitute(x='food')'Using $ buy food!'#利用字典提供鍵/值對>>> 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'>>> s = Template('I am ${name},${age} years old.')>>> d = {'name':'Jerry','age':50}>>> s.substitute(d)'I am Jerry,50 years old.'#>>> s = '%s plus %s equals %s' % (1,1,2)>>> print s1 plus 1 equals 2
------

基本的轉換說明符號:

(1)%字元,標誌轉換的開始
(2)轉換標誌(可選)

  • -    靠左對齊
  • +    轉換值之前的加號或減號
  • " "  空白字元,表示正數之前,保留空格
  • 0    轉換值不夠,則用0來填充
(3)最小欄位寬度(可選):
  • 最小具有指定值的寬度
  • 如果是*,則值從元祖中讀取
(4).精度值(可選)
  • 如果是實數,精度值表示後面的位元
  • 如果是字元,精度值表示後面的最大寬度
  • 如果是*,精度值從元祖中讀取
(5)轉換類型


------

簡單轉換

>>> print 'price of eggs is %d' % 12price of eggs is 12>>> print 'Hexadecimal price of eggs: %x' % 42Hexadecimal price of eggs: 2a>>> from math import pi>>> 'Pi: %f...' % piPi: 3.141593...>>> 'very inexact estimate of pi: %i' % pivery inexact estimate of pi: 3>>> 'Using str: %s' % 42LUsing str: 42>>> 'Using repr: %r' % 42LUsing repr: 42L
------

欄位的寬度和精度

兩個參數都是整數,用.分割,如果只給出精度,必須包含點號.

>>> '%10f'   % pi   #寬度為10'  3.141593'    >>> '%10.2f' % pi   #寬度為10,精度為2'      3.14'>>> '%.2f'   % pi   #精度為2'3.14'>>> '%.5s'   % 'Hello, world!'   #字串長度 'Hello'>>> '%.*s'   % (5,'Hello,World!')#字串長度,其值從元祖中讀取'Hello'
------

符號、對齊和0填充

在欄位寬度和精度值之前可以放置一個“標表”,可以是0,+," ">>> '%010.2f' % pi #寬度為10,精度2,不夠用0填充'0000003.14'>>> 0108>>> '%-10.2f' % pi #靠左對齊'3.14      '#空格,在對齊正負數時,會很有用>>> print ('% 5d' % 10) + '\n' + ('%5d' % -10)    10  -10#+號,表示不管正數還是負數,標出其正負值,在對齊有用>>> print ('%+5d' % 10) + '\n' + ('%+5d' % -10)  +10  -10 

字串格式化樣本

width = input('Enter number here:')price_width   = 10item_width    = width - price_widthheader_format   = '%-*s%*s'content_format  = '%-*s%*.2f'print '='*widthprint header_format  % (item_width,'Item',price_width,'Price')print '-'*widthprint content_format % (item_width,'Apples',price_width,0.4)print content_format % (item_width,'Pears',price_width,0.5)print content_format % (item_width,'Banana',price_width,8)print content_format % (item_width,'Tomato',price_width,6)print '='*width
輸出結果:Enter number here:40========================================Item                               Price----------------------------------------Apples                              0.40Pears                               0.50Banana                              8.00Tomato                              6.00========================================

------

字串方法

find: 在一個長字串中尋找字元,並返回最左邊索引位置,第一個位置為0,未找到為:-1

#find 不返回布爾值: -1:未找到 0:找到,索引為0,即開始位置>>> 'I love python'.find('Perl')-1>>> 'I Love Python'.find('Python')7>>> title = 'Python is so funny language'#如果尋找的對象在開始位置,則為0>>> title.find('Python')0#如果有多個話,返回第一個匹配的索引值>>> title.find('o')4#該方法可以選擇尋找的起始點,終結點>>> subject = '$$$ Get rich now!!! $$$'#預設的話,從0開始尋找>>> subject.find('$$$')0#只提供起始位置>>> subject.find('$$$',1)20#提供了起始位置和終點>>> subject.find('!!!',0,16)-1
------

join: split的反方法,用於在隊列中添加元素

>>> seq = [1,2,3,4,5]          #數字列表>>> sep = '+'>>> sep.join(seq)Traceback (most recent call last):  File "<pyshell#242>", line 1, in <module>    sep.join(seq)TypeError: sequence item 0: expected string, int found>>> seq = ['1','2','3','4','5'] #字串列表>>> sep.join(seq)'1+2+3+4+5'>>> dirs = '','usr','bin','env' #注意最前面的空格>>> '/'.join(dirs)'/usr/bin/env'>>> print 'C:'+'\\'.join(dirs)  #雙反斜線C:\usr\bin\env

------

lower:將字串全部轉為小寫

>>> 'Hello,WORld'.lower()'hello,world'#如果在尋找的時候,輸入是大寫則找不到>>> if 'Jerry' in ['jerry','tom','sherry','john']: print "Found it."#這時需要先轉換為小寫>>> if 'Jerry'.lower() in ['jerry','tom','sherry','john']: print "Found it."Found it.
#title(): 首字母大寫>>> "This is a dog, that's a pig".title()"This Is A Dog, That'S A Pig"#string模組下的capwords()同樣可以實現首字母大寫功能>>> import string>>> string.capwords('hello,world.')'Hello,world.'

------

replace: 找到後,全部替換

>>> 'Tom and Jerry'.replace('Tom','Sherry')'Sherry and Jerry'

------

split: 非常重要的方法,join的反方法

>>> '1+2+3+4+5'.split('+')['1', '2', '3', '4', '5']>>> '/usr/bin/env/python'.split('/')['', 'usr', 'bin', 'env', 'python']#如果不提供任何分割符,則以空格,製表格,分行符號來分割>>> 'Using the default'.split()['Using', 'the', 'default']
------

strip: 除去字串兩側的Null 字元,不包括字串內部

>>> ' How old are you? '.strip()'How old are you?'#如果輸入可能帶空格,則要和strip()結合使用>>> names = ['jerry','sherry','tom']>>> name  = 'jerry '>>> if name in names: print 'find it.'>>> if name.strip() in names: print 'find it.'find it.
#也可以指定去除的項,如在本地,則是(除掉首微兩端的*!)>>> '***spam * in * everyone!!!***''***spam * in * everyone!!!***'>>> '***spam * in * everyone!!!***'.strip('*!')'spam * in * everyone'

------

translate: 同replace,可以替換字串中某些部分。區別,translate只處理單個字元.

優勢,可以同時進行多個替換,有些時候比replace效率高.在轉換之前需要準備一張轉換表

>>> from string import maketrans  #和maketrans結合使用>>> table = maketrans('cs','kz')  #用k替換c,用z替換s>>> 'this is c character'.translate(table)'thiz iz k kharakter'
------

本章函數

string.capwords(s[,sep])    使用split函數分割字串,使用capitalize將分割得到的各單字首大寫;
                            並且使join函數以sep為分割符將單詞串連起來 
string.maketrans(from,to)   建立用於轉換的表



字串是什?

in vb
dim str as string '聲明字串
str = "231dd&&" '231dd&&為其內容,str為變數名稱
in C
char s[]={""}; //定義Null 字元串 可以看成是變數s數組
s[1]='a';//第一個字元是a 注意這裡用的是單引號
s[2]='\0';//字串結束
 
字元與字串的不同

character是資料庫中定義的
string是程式設計語言中定義的
比如 String str = 'tom';
資料庫中表table有個欄位name定義了character類型,那麼str就可以儲存到這個表的這個欄位中
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.