NO IMAGE

Python字串

谷歌程式碼大學 > 程式語言

Python有一個內建的字​​符串類,名為“STR”與許多方便的功能(有一個名為“字串”,你不應該使用的舊的模組)。雙人床或單引號括字串可以,雖然單引號是較為常用。反斜槓轉義工作在單核和雙引號的文字通常的方式 – 例如\ N \’\“(我沒有做”,同樣的單引號,雙引號的字串文字可以包含單引號,沒有任何大驚小怪EG)。“字串可以包含雙引號字串文字可以跨越多行,但必須有在每一行的末尾的反斜槓\逃脫三重引號內的字串字面的換行符。,“”或”’,可以多行文字。

Python字串是“不可改變的”,這意味著他們不能改變後,他們建立(Java字串也使用這種一成不變的風格)。由於字串不能改變,我們構造*新*我們去代表計算值的字串。因此,例如,表示式(“你好” “中有”)2串’你好’和’有’,並建立一個新的字串“hellothere”。

字串中的字元,可使用的標準[]語法,如Java和C ,Python使用從零開始的索引,所以如果str是’你好’STR [1]是’E’。如果索引是字串的界限,Python會引發一個錯誤。Python的風格(不像Perl)的停止,如果它不能告訴做什麼,而不是正好彌補了預設值。也方便“片”的語法(下同)的作品,從字串中提取任何的子串。LEN(字串)函式返回一個字串的長度。[]語法和LEN()函式實際上在任何序列型別 – 字串,列表等。Python的嘗試,其業務工作在不同型別中始終。Python的新手疑難雜症:不要使用“LEN”作為變數名,以避免阻塞len()函式。“ ”操作​​符可以連線兩個字串。注意在下面的變數的程式碼沒有預先宣佈
– 只是分配給他們去。

  =  '您好' 
  列印的[ 1 ]           #I 
  列印LEN ()        #2 
  列印小號   “中有”   ##您好

與Java不同,“ ”不自動轉換成數字或其他型別的字串形式。str()函式的值轉換成字串的形式,使他們能夠與其他字串相結合。

  PI =  3.14 
  ##文字='pi的值是“  PI##沒有,沒有工作
  文字=  “pi的值是”     STR (PI )  ##是

對於數字,標準的運營商, / *,在通常的方式工作。有沒有 操作符,但 =,-=,等工作。如果你想整數除法,這是最正確的使用2斜線 – 如6 / / 5 1(以前的Python 3000,一個單/與整數的INT分工,但前進/ /是首選的方式來表示想要INT分工。)

“列印”操作員列印出一個或多個換行符(在專案結束時留下一個逗號抑制換行符)Python的專案。一個“R”和“原始”的字串文字字首,未經特殊處理的反斜槓傳遞所有的字元,通過,所以r’x \ NX“計算長度4串’X \ NX”。A“U”字頭,讓你寫一個unicode字串文字(Python有很多其他的Unicode支援功能 – 見下面的文件)。

  原料= R '這個\ T \ n和“ 
  列印原料      #這\ T \ n和,
    
  多=  “”這是最好的時代
  ,這是最壞的時代“。 “

字串的方法

下面是一些最常見的字串方法。一種方法是像一個函式,但它執行的“上”的物件。如果變數s是一個字串,然後s.lower()的程式碼執行該字串物件LOWER()的方法,並返回結果(這種方法在物件上執行的想法是物件的基本思路之一物件導向程式設計,物件導向)。下面是一些最常見的字串方法:

  • s.lower s.upper(),() – 返回字串的小寫或大寫版本
  • s.strip() – 返回一個空白字串的開始和結束取消
  • s.isalpha()/ s.isdigit()/ s.isspace ()… – 如果所有的字串字元在各種字元類的測試
  • s.startswith(“其他”),s.endswith(“其他”) – 測試,如果該字串與其他字串開始或結束
  • s.find(“其他”) – 為給定的其他字串(不是正規表示式)在S的搜尋,並在那裡開始的第一個索引或-1,如果沒有找到返回
  • s.replace(’老’,’新’) – 返回一個字串出現的所有’老’已經由’新’取代
  • s.split(’DELIM“) – 返回一個給定的分隔符分隔的子字串列表。delimiter不是正規表示式,它只是文字。“AAA,BBB,CCC’分裂(‘,’) – > [‘AAA’,’BBB’,’CCC’]。作為一個方便的特殊情況下s.split()(不帶引數)所有空白字元分割。
  • s.join(名單) – split()的對面,加入在給定列表中的元素一起使用作為分隔符的字串。如’—‘.加入([‘AAA’,’BBB’,’CCC’]) – > AAA – BBB — CCC

一個谷歌搜尋“蟒蛇STR”應該引導你到官方python.org字串的方法,它列出了所有的STR方法。

Python沒有一個單獨的字元型別。相反,這樣的表情[8]返回一個字串,長度為1包含的字元。與該字串長度1,運營商==,<=,… … 正如您所期望的所有工作,所以一般情況下,您並不需要知道,Python沒有一個獨立的標量“char”型別。

字串片

“片”的語法是一種方便的方法是指序列的子部分 – 通常字串和列表。切片[開始:結束]開始啟動時,向上延伸,但不包括結束的元素。的假設,我們有S =“你好”

字母索引的字串'你好'0 1 2 3 4

  • [1:4] – “ELL”字元索引1處開始,向上延伸,但不包括指數4
  • [1]是“ello” – 省略或者指數的預設字串的開始或結束
  • [:]是’你好’ – 省略總是給我們的整個事情的副本(這是Python的方式來複制一個像一個字串或列表序列)
  • [1:100]是“ello” – 一個過大的指數,被截斷的字串的長度

標準的從零開始的索引號碼方便地存取附近開始的字串的字元。作為一種替代方法,Python使用負數容易獲得的字元在字串的結尾:[-1]是最後一個字元“O”,S [-2]是’L’下一個到最後CHAR,等等。負指數號碼數從字串的結尾:

  • [-1]從最終是“O” – 最後一個字元(第1)
  • [-4]“E” – 從年底的第四
  • S [:-3]是’他’ – 往上走,但不包括最後3個字元。
  • [-3]“LLO” – 開始與結束的第三字元,並延伸到字串的結尾。

這是一個片整齊不言而喻,對於任何指數n,S [:N] [N] == S。這甚至n為負數或出界。或者把另一路S [:N]和S [N]總是分割成兩部分字串,節約所有的字元的字串。正如我們將看到清單中的部分後,切片與列表。

字串%

Python有一個printf()般的設施,把一個字串。%操作符左側(%ð INT,%s字串%F /%G浮點),並在右邊的一個元組的匹配值(一個元組是由一個printf型別的格式字串分隔的值逗號,通常在括號內分組):

  #%操作符的
  文字=  “%d的小豬出來,不然我就%s和%s和%s” % ( 3 , “一怒之下” , “噗” , “放空” )

上面一行是一種長 – 假設你要分解成單獨的行。你不能只是拆分後的’%’,你可能會在其他語言行,因為預設情況下,Python把每行作為一個單獨的語句(加方,這就是為什麼我們不需要上鍵入每個分號線)。為了解決這個問題,括在括號外的整個表示式 – 則表示式允許跨越多行。這行程式碼跨技術的工作原理與各分組構造詳列如下:(),[],{}。

  #新增括號,使長行的工作
  :文字 = (“%ð三隻小豬出來,不然我就%s和%s和%s  “ 
    % (3  ,“一怒之下“  ,“噗“  ,“放空 “ ))

i18n的字串(UNICODE)

常規的Python字串* * Unicode的,他們只是普通的位元組。要建立一個Unicode字串,字串上使用的’U’字首文字:

> ustring = U '的unicode \ u018e字串\ XF1“ 
> ustring 
ü “一個unicode \ u018e字串\ XF1”

一個unicode字串是從普通的“STR”字串物件的不同型別,但Unicode字串相容(它們共享的公共超類“basestring”),和各種庫,如正規表示式的正常工作,如獲通過,而不是一個Unicode字串正常的字串。

要轉換一個unicode字串的位元組編碼為“UTF – 8”等,呼叫ustring.encode(“UTF – 8”),Unicode字串的方法。去其他方向,UNICODE(編碼)功能轉換成編碼的純位元組的unicode字串:

#(從上面unistring包含一個Unicode字串)
> S = unistring 。編碼(“UTF - 8' )
> S 
“的unicode \ XC6 \ x8e字串\ XC3 \ xb1”   #UTF - 8編碼位元組
> T = UNICODE ( UTF - 8“ )#轉換為位元組的unicode字串              
> T == unistring                       #原,YAY!

真正的

內建列印不完全與Unicode字串。您可以編碼()先列印在UTF – 8或其他。在檔案閱讀部分,有一個例子,顯示如何開啟一個文字檔案,一些編碼和讀出的Unicode字串。注意,Unicode處理Python 3000的是顯著清理與Python 2.x的行為,這裡描述的是一個面積。

如果宣告

Python不使用{}括起來的程式碼塊,如果/迴圈/功能等。相反,Python使用冒號(:)和縮排/空白組語句。這個詞“ELIF”是相同長度字“:”為如果沒有需要在括號內(從彗星 / Java的差異較大),和它可以有* elif的*和*其他*條款(助記符布林測試其他“)。

作為一個測試,如果任何值都可以使用。“零”值全部為假計數:無,0,空字串,空列表,空的字典。還有一個與布林型別的兩個值:True和False(轉換為int,這些1和0)。Python有通常的比較操作:==,=,<,<=,>,> = Java和C不同,==過載,以正確處理字串。布林運算子列明字* * * *,*不*(Python不使用C風格的&&| |!)。這裡的程式碼可能看起來像一個拉警察通過一個調速 – 注意每塊then / else語句開始:和陳述其壓痕分組:

  如果速度> =  80 :
    列印 '許可和登記,請
    “ 如果心情== '可怕  ' 或速度>  = 100 
      : 列印“你有權保持沉默。
    “elif 的心情 =='壞 ' 或速度>  = 90 : 
      列印 “我要去給你寫一票。” 
      write_ticket ()
    其他:
      列印 “讓我們儘量保持在80 OK?”

我覺得省略“:”是我最常見的語法錯誤,當輸入在上面的程式碼排序,可能是因為這是一個額外的事情,與我的C / Java的習慣型別。另外,不要把中括號的布林測試 – 這是一個C / JAVA的習慣。如果程式碼是短暫的,你可以在同一行上的程式碼“:”後,像這樣(這也適用於功能,迴圈等方面也),雖然有些人覺得它的空間的東西在單獨的行更具可讀性。

  如果速度> =  80 : 列印 “,以便破獲” 
  其他: 列印 “有一個愉快的一天”

練習:string1.py

為了實踐在本節中的材料,嘗試 string1.py在行使基本練習 。