Python字串詳細介紹

來源:互聯網
上載者:User

Python字串詳細介紹

   這篇文章主要介紹了Python字串詳解,本文講解了字串相關知識、字串的一些特性、原始字串、unicode字串、字串的常用操作方法、內建函數列表等內容,需要的朋友可以參考下

  簡介

  字串序列用於表示和儲存文本,python中字串是不可變的,一旦聲明,不能改變

  通常由單引號(' ),雙引號(" ),三引號(''' """)包圍

  其中三引號可以由多行組成,編寫多行文本的快捷文法,常用語文檔字串,在檔案的特定地點,被當做注釋。便捷的多行注釋

  Python實際三類字串:

  1.通常意義字串(str)

  2.原始字串,以大寫R 或 小寫r開始,r'',不對特殊字元進行轉義

  3.Unicode字串,u'' basestring子類

  在 Python 中,字串是“不可改變的序列”

  1.不可變

  2.滿足序列基本操作,按位置存取,切片及索引

  字串

  1.獲得協助:

   代碼如下:

  >>> help(str)

  >>> dir(str)

  >>> help(str.replace)

  2.不可變性

  在建立之後就不能就地改變(同java),不能通過對其某一位置進行賦值而改變字元劃分為不可變序列,這些字串所包含的字元存在從左至右的順序,不可在原處修改。python中字串相當於一個不可變序列的列表,一旦聲明,每個字元位置固定

  意味著若想改變,必須建立一個!

   代碼如下:

  >>>s='spam'

  >>>s[0]='k' #TypeError

  #修改字串類似java,重新賦值

  s = ‘k' + s[1:]

  原始字串

  原始字串常量,r”abcd”,(r/R)即去掉了反斜線轉義機制。關閉轉義機制,即\不再表示轉義

  用處:

  1.Regex

  用於處理Regex,減少反斜線

   代碼如下:

  p4search = re.compile(r'\s*')

  2.系統路徑

  可以方便地表示系統路徑

   代碼如下:

  path = r'e:\book'

  unicode字串

  Unicode是書寫國際文本的標準方法。

  Python允許你處理Unicode文本——你只需要在字串前加上首碼u或U。例如,u"This is a Unicode string."

  BP: 在你處理文字檔的時候使用Unicode字串,特別是當你知道這個檔案含有用非英語的語言寫的文本。

  常用操作

  1.基本操作

   代碼如下:

  + :string1+string2 #聯結字串,將後一個串連結到前一個串的後面

  Python不允許在+運算式中出現其他類型,需要手工轉【這點不同於java】‘abc'+str(9)

  * :string*n #建立一個新字串重複n次原來的串

  [] :string[n] #從字串中擷取對應位置的一個字元

  [:] :string[n:m] #截取字串,如果為:m從頭到m如果為n:從n到尾

  in :char in string #判斷一個字元是否在串中,如果在返回為真(True)

  not in :char not in string #判斷一個字元是否不在串中,如果在返回為真(True)

  r/R : r/Rstring #禁止逸出字元的實際意義,整個字元為原始意義

  len() : 長度len(s)

  2.類型轉換

  字串和數字相互轉換

  字串到數字int/float/long

  數字到字串str

   代碼如下:

  >>> int(42)

  42

  >>> int('42')

  42

  >>> str(42)

  '42'

  >>> float('42.0')

  42.0

  >>> str(42.0)

  '42.0'

  或者使用string模組的函數

  s:進行轉換的字串, base:可選,目標進位

   代碼如下:

  import string

  string.atoi(s[,base]) #base預設為10,如果為0,那麼s就可以是012或0x23這種形式的字串,如果是16那麼s就只能是0x23或0X12這種形式的字串


  string.atol(s[,base]) #轉成long

  string.atof(s[,base]) #轉成float

  字串和列表的轉換

  字串轉列表:

   代碼如下:

  s='spam'

  l = list(s)

  l2 = "hello world".spilt()

  列錶轉字串

  複製代碼 代碼如下:

  k = ‘'.join(l)

  注意,不能join列表中的非字串

  3.修改字串

   代碼如下:

  s = s + 'a'

  s = s[3:] + ‘b'

  s = s.replace(‘pl','pa')

  a = '' #賦值空

  del a #整個變數刪除

  4.索引和分區

  索引s[i]

   代碼如下:

  s[0]首個

  s[-1] = s[len(s)-1] 倒數第一個

  分區s[i:j]

   代碼如下:

  不含上邊界,s[1:3] 取[1-2]

  s[1:]取1到結束 s[:3] 取開始到2

  s[:-1]開始到倒數第二個

  s[:]開始到結尾,相當於一個複製

  s[1:10:2] 取1-9,步長=2

  s[a:b:-2] 步長為負數,兩個邊界意義反轉了,表示從b+1到a,步長-2

  s='abcdefg'

  s[5:1:-1] 得到 fedc

  s[1:3] == s[slice(1,3)] 內建函數

  字串格式化

  這裡只介紹基底字元串格式化,擴充在後續篇幅介紹%c 單個字元%d 十進位整數%o 八進位整數%s 字串%x 十六進位整數,其中字母小寫%X 十六進位整數,其中字母大寫

   代碼如下:

  >>> str = "so %s a day!"

  >>> str % 'beautiful'

  'so beautiful a day!'

  >>> '{0} is {1}'.format('a','b')

  'a is b'

  >>> template = "{0}, {1} and {2}"

  >>> template.format('a', 'b', 'c')

  'a, b and c'

  內建函數列表

  【字串方法是python文本處理頭號工具】

  string.capitalize()

  字串第一個字元大寫

  string.center(width,[,fill])

  原字元置中,空格填充至width長度

  string.count(str,beg=0,end=len(string))

  獲得字串中某一個子串的數目,計算出現次數,可指定範圍

  string.decode(encoding='UTF-8',errors='strict')

  解碼字串,出錯預設報ValueError,除非errors是ignore或replace

  string.encode(encoding='UTF-8',errors='strict')

  string.endswith(suffix,beg=0,end=len(string))

  是否以**結尾

  string.expandtabs(tabsize=8)

  把字串中tab轉為空白格,預設8個

  string.find(str,beg=0,end=len(stirng))

  檢測是否包含str,存在返回開始索引,否則返回-1

  string.index(str,begin=0,end=len(string))

  同find,不存在報異常,ValueError

  string.isalnum()

  至少一個字元,且所有字元均為字母或數字,True. 檢測字串是否只包含0-9A-Za-z

  string.isalpha()

  至少一個字元,所有字元都是字母,True. 檢測字串是否只包含字母

  string.isdecimal()

  只包含十進位數,True

  stirng.isdigit()

  只包含數字,True. 檢測字串是否僅包含數字

  string.islower()

  至少一個區分大小寫字元且所有字元小寫,True. 檢測字串是否均為小寫字母

  string.isnumeric()

  只含數字字元,True

  string.isspace()

  只包含空格,True. 檢測字串是否均為空白字元

  string.istitle()

  標題化字元,True. 檢測字串中的單詞是否為首字母大寫

  string.isupper()

  至少一個區分大小寫字元且所有字元大寫,True. 檢測字串是否均為大寫字母

  string.join(seq)

  以string作為分隔字元,seq中所有元素合并為新的字串. 將原字串插入參數字串中的每兩個字元之間

  string.ljust(width)

  返回一個原字串靠左對齊,空格補充至長度width

  string.lower()

  轉小寫. 將字串全部轉為小寫

  string.lstrip()

  截掉左側的空格

  string.partition(str)

  = find+split,從str出現第一個位置,截斷為pre_str,str,after_str元組,不含str則pre_str=strstring.replace(str1,str2,num=string.count(str1))替換,指定不超過num次,可作為模板實現

  string.rfind(str,beg=0,end=len(string))

  同find,右邊開始

  string.rindex(str,beg=0,end=len(string))

  同index,右邊開始

  string.rjust(width)

  靠右對齊,空格補齊

  string.rpartition(str)

  同partition,右邊開始

  string.rstrip([chars])

  清理右側空白,包括分行符號,返回處理後字串

  string.split(str=””, maxsplit =string.count(str))

  以str切片,可指定分割次數, 分割字串,返回列表,預設分隔符號空格

  string.splitlines(num=string.count(‘\n'))

  s.splitlines([keepends])按行分隔,可指定分割次數

  string.startswith(obj,beg=0,end=len(string))

  以str開頭,True. 檢測字串是否以某一子串開頭

  string.strip([obj])

  在string上執行lstrip和rstrip

  string.swapcase

  反轉string中大小寫. 字串中小寫轉大寫,大寫轉小寫

  string.title()

  標題花,單字首大寫,其餘小寫

  string.translate(str,del=””)

  s.translate(table)根據str給出錶轉換string字元,要過濾的字元放在del參數中

  string.upper()

  轉大寫. 將字串全部轉為大寫

  string.zfill(width)

  返回長度width的字串,原字串靠右對齊,前面填充0

  len(string)

  擷取字串的長度

  最佳實務

  1.迴圈中用到長度

   代碼如下:

  while i < len(stri):

  #修改

  size = len(stri)

  while i < size

  2.字串追加

  複製代碼 代碼如下:

  l = ['a', 'b']

  result = ''

  for i in l:

  result += i

  #修改

  result = ''.join(l)

  其他

  1.轉義符

  幾個常用:

  \n換行,\\反斜線

  \t製表 \'單引號

  \r斷行符號 \"雙引號

  後續需擴充

  字串編碼詳解

  字串格式化

  Regex

  字串涉及常用模組(序列化/文本封裝等)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.