1. 程式人生 > >[Python入門及進階筆記]Python-基礎-字串小結

[Python入門及進階筆記]Python-基礎-字串小結

部落格遷往:新地址 (點選直達)

新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗

csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉


------------------------

字串

簡介

字串序列用於表示和儲存文字,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.正則表示式

用於處理正則表示式,減少反斜槓

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回車 \"雙引號

後續需擴充套件

字串編碼詳解
字串格式化
正則表示式
字串涉及常用模組(序列化/文字包裝等)

The end!

To be continue

wklken

Email: [email protected]

Blog: http://blog.csdn.net/wklken

2013-03-10

轉載請註明出處,謝謝

相關推薦

[Python入門筆記]Python-基礎-字串小結

部落格遷往:新地址 (點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ------------------------ 字串 簡

[Python入門筆記]Python-基礎-集合小結

<style> <!-- h1, h2, h3, h4, h5, h6, p, blockquote {margin:0; padding:0} body {font-family:"Helvet

[Python入門筆記]Python-基礎-數字小結

<style> <!-- h1, h2, h3, h4, h5, h6, p, blockquote {margin:0; padding:0} body {font-family:"Helvet

[Python入門筆記]Python-基礎-函式小結

部落格遷往:新地址 (點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ----------------- 函式 簡介及定義 簡介

[Python入門筆記]Python-基礎-字典小結

部落格遷往:新地址(點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ----------------------- 字典 定義

[Python入門筆記00]-寫在前面(目錄/書籍/學習路線/其他)

最新系列在 入口 =============================================    學習Python有一段時間了,需要來一個階段性總結了     個人看書的模式是,一邊看書,一邊敲程式碼,一遍記筆記(record for search

標號(11):python(就業階段)——javascript入門

<1>javascript介紹 1、JavaScript是執行在瀏覽器端的指令碼語言 2、JavaScript主要解決的是前端與使用者互動的問題,包括使用互動與資料互動,JavaScript是瀏覽器解釋執行的。 3、瀏覽器彈窗 <script> alert(

python前端JavaScript入門

知識點預習 1、js基本使用2、js變數定義及型別 3、js函式定義及預解析 4、js獲取標籤 5、js讀寫標籤屬性 00-JavaScript簡介 JavaScript是執行在瀏覽器端的腳步語言,JavaScript主要解決的是前端與使用者互動的問題,包括使用互動與資料互動。 JavaScri

python入門篇(六)之高階語法用法

    高階知識針對包、類庫的開發者,函式只是一段可執行的程式碼 並不是物件,閉包、函數語言程式設計 閉包=函式+環境變數 a=10 def outer(): a=25 def inner(x): print(a*x*x) retu

限時領取 | 人工智慧入門必讀Python書籍PDF!

Python是一門簡單易學,功能強大的程式語言。它具有高效的高階資料結構和簡單而有效的面向物件程式設計方法。Python優雅的語法和動態型別以及其解釋性的性質,使它在許多領域和大多數平臺成為編寫指令碼和快速應用程式開發的理想語言。今天小編就給大家推薦3本Python相關的書籍。(想獲取本書電子版可以

python入門篇(二)之變數和運算子

變數 變數的命名規則:    字母、數字、下劃線組成,   系統關鍵字不能在變數名中 如and、if、import   變數名區分大小寫   變數沒有型別限制 同js   系統方法名建議不用來做變數名,避免造成衝突 如type print   Int str t

python入門篇(四)之包、模組、函式與變數作用域

python專案的組織結構 包(資料夾)-->模組(檔案)-->類-->函式和變數   seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間 seven包的結構: seven    --t(子包)        --

Python入門,這本書有什麼不同?

人們常說Python語言簡單,編寫簡單程式時好像也確實如此。但實際上Python絕不簡單,它也是一種很複雜的語言,其功能特徵非常豐富,能支援多種程式設計風格,在幾乎所有方面都能深度定製。要想用好Python,用它解決複雜問題,開發功能正確的、效率高的程式,需要很好地理解上面說

Python如何賺錢? python爬蟲如何python就業? 如何快速入門python? .....

1、如何快速入門 Python ? 我之前給大家說過,速成一門技能是不可能的,你需要花很多時間才能真正的掌握一門技能,但是快速入

全面解讀JavaScript入門,100%基礎知識掌握!

isnan cookies dom 事件 document 動態 情況 blue tint mat 一、JavaScript 簡介 1、JavaScript 是 Web 的編程語言,是前端開發必須掌握的三門語言之一,即: HTML 定義了網頁的內容 CSS

最新玩轉資料結構從入門 資料結構基礎

第1章 歡迎學習《玩轉資料結構》歡迎大家學習《玩轉資料結構》課程。在這個課程中,我們將從底層實現諸多資料結構,從簡單,到複雜,並且探索他們的應用。在這一章,我們將來看一看資料結構的具體作用,學習資料結構的誤區,學習這個課程的注意事項,和課程環境的基本搭建:) ...第2章 不要小瞧陣列陣列,看似是最

程式語言入門、設計模式、面向物件書籍

1. Python Python 基礎教程 Automate the Boring Stuff with Python(繁瑣工作自動化) 前六章,python 語言基礎; 其後便是一些自動化實現

System.Web.Routing入門 下篇

上面介紹的是最簡單的一種定義方式。當然我們可以建立更復雜的規則。其中就包括設定規則的預設值以及設定規則的正則表示式。 UrlRouting高階應用 預計效果: 當我訪問/a/b.aspx時就會轉到Default.aspx?category=a&action=b在頁面上顯示 cate

System.Web.Routing入門 上篇

System.Web.Routing已經作為一個程式集包含在.net3.5sp1中釋出了。雖然我們並沒有在3.5sp1中發現Asp.net Mvc的蹤跡,但是亦以感覺到它離我們不遠了。 System.Web.Routing用於在Asp.net的Web應用程式中進行URLRouting。 所謂UrlRo

leetcode 迴文數 (python)(問題:不用字串

剛開始刷題,第9道題就是一道簡單的判斷迴文數題。原題目如下判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。示例 1:輸入: 121 輸出: true 示例 2:輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。