概述
字符串這玩意吧友绝,主要是給人看的堤尾。您想一下,如果是計(jì)算機(jī)的它肯定更喜歡處理數(shù)值型數(shù)據(jù)了迁客,實(shí)質(zhì)上郭宝,字符串最后也被拆成一個(gè)個(gè)的字符來(lái)處理的,而字符也是轉(zhuǎn)化成ASCII碼的數(shù)值來(lái)處理的掷漱。但粘室,人是比較感性的動(dòng)物,其實(shí)我們更喜歡聽別人講故事切威、而不是看別人給的一大串?dāng)?shù)字(個(gè)別天才除外)育特。
所以說(shuō)呢,計(jì)算機(jī)喜歡數(shù)值類型先朦、人喜歡字符串類型缰冤。計(jì)算機(jī)為了人類這種不良嗜好,把心操的細(xì)碎喳魏。需要經(jīng)常在數(shù)值型和字符串型之間進(jìn)行切換棉浸,而且需要處理普通字符、轉(zhuǎn)義字符刺彩,Unicode字符串迷郑、非Unicode字符串等等。
定義一個(gè)字符串
字符串是 Python 中最常用的數(shù)據(jù)類型创倔。我們可以使用引號(hào)('或")來(lái)創(chuàng)建字符串嗡害。
創(chuàng)建字符串很簡(jiǎn)單,只要為變量分配一個(gè)值即可畦攘。例如:
str1 = 'Hello World!'
需要注意的是霸妹,'和“是不能混用的,比如你這樣寫就會(huì)報(bào)錯(cuò)知押。
>>>str1='abc"
File "<stdin>", line 1str1='abc"
? ? ? ? ? ? ?^SyntaxError: EOL while scanning string literal
訪問(wèn)字符串中的值
Python 不支持單字符類型叹螟,單字符在 Python 中也是作為一個(gè)字符串使用鹃骂。
Python 訪問(wèn)子字符串,可以使用方括號(hào)來(lái)截取字符串罢绽,如下實(shí)例:
#!/usr/bin/python
var1='Hello World!'
var2="Python Runoob"
print "var1[0]: ",var1[0]
print "var2[1:5]: ",var2[1:5]
以上實(shí)例執(zhí)行結(jié)果:
var1[0]:H
var2[1:5]:ytho
你看畏线,上面print "var1[0]:", var1[0]這行代碼里面的這個(gè)逗號(hào)很有意思,它將前面的字符串和后面的一個(gè)字符串格式化為一行串在一起輸出良价。
Python 字符串連接
我們可以對(duì)字符串進(jìn)行截取并與其他字符串進(jìn)行連接寝殴,如下實(shí)例:
#!/usr/bin/python # -*- coding: UTF-8 -*-
var1='Hello World!'
print"輸出 :- ",var1[:6]+'hoohoo!'
以上實(shí)例執(zhí)行結(jié)果
輸出 :-? Hello hoohoo!
Python 轉(zhuǎn)義字符
在需要在字符中使用特殊字符時(shí),python 用反斜杠 \ 轉(zhuǎn)義字符棚壁。如下表:
Python字符串運(yùn)算符
字符串還可以進(jìn)行一些的運(yùn)算杯矩,包括加栈虚、乘袖外、成員等運(yùn)算。
下表實(shí)例變量 a 值為字符串 "Hello"魂务,b 變量值為 "Python":
字符串運(yùn)算
看實(shí)例代碼:
#!/usr/bin/python # -*- coding: UTF-8 -*-
a = "Hello"
b = "Python"
print "a + b 輸出結(jié)果:", a + b
print "a * 2 輸出結(jié)果:", a * 2
print "a[1] 輸出結(jié)果:", a[1]
print "a[1:4] 輸出結(jié)果:", a[1:4]
if( "H" in a) :
? ?print "H 在變量 a 中"
else :
? ?print "H 不在變量 a 中"
if( "M" not in a) :
? ?print "M 不在變量 a 中"
else :
? ?print "M 在變量 a 中"
print r'\n' print R'\n'
以上程序執(zhí)行結(jié)果為:
a+b輸出結(jié)果:Hello Python
a*2輸出結(jié)果:Hello Hello
a[1]輸出結(jié)果:e
a[1:4]輸出結(jié)果:ell
H在變量a中
M不在變量a中
\n
\n
Python 字符串格式化
Python 支持格式化字符串的輸出 曼验。盡管這樣可能會(huì)用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個(gè)值插入到一個(gè)有字符串格式符 %s 的字符串中粘姜。
在 Python 中鬓照,字符串格式化使用與 C 中 printf 函數(shù)一樣的語(yǔ)法。
如下實(shí)例:
#!/usr/bin/python
print"My name is %s and weight is %d kg!"%('Zara',21)
以上實(shí)例輸出結(jié)果:
My name is Zara and weight is 21 kg!
python 字符串格式化符號(hào):
格式化操作符輔助指令:
Python2.6 開始孤紧,新增了一種格式化字符串的函數(shù) str.format()豺裆,它增強(qiáng)了字符串格式化的功能。
Python 三引號(hào)
Python 中三引號(hào)可以將復(fù)雜的字符串進(jìn)行賦值号显。
Python 三引號(hào)允許一個(gè)字符串跨多行臭猜,字符串中可以包含換行符、制表符以及其他特殊字符押蚤。
三引號(hào)的語(yǔ)法是一對(duì)連續(xù)的單引號(hào)或者雙引號(hào)(通常都是成對(duì)的用)蔑歌。
>>>hi='''hi there'''
>>>hi# repr()'hi\nthere'
>>>print hi# str()
hi there
三引號(hào)讓程序員從引號(hào)和特殊字符串的泥潭里面解脫出來(lái),自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的揽碘。
一個(gè)典型的用例是次屠,當(dāng)你需要一塊HTML或者SQL時(shí),這時(shí)當(dāng)用三引號(hào)標(biāo)記雳刺,使用傳統(tǒng)的轉(zhuǎn)義字符體系將十分費(fèi)神劫灶。
Unicode 字符串
Python 中定義一個(gè) Unicode 字符串和定義一個(gè)普通字符串一樣簡(jiǎn)單:
>>> u'Hello World !'
u'Hello World !'
引號(hào)前小寫的"u"表示這里創(chuàng)建的是一個(gè) Unicode 字符串。如果你想加入一個(gè)特殊字符掖桦,可以使用 Python 的 Unicode-Escape 編碼本昏。如下例所示:
>>>u'Hello\\u0020World !'
u'Hello World !'
被替換的 \\u0020 標(biāo)識(shí)表示在給定位置插入編碼值為 0x0020 的 Unicode 字符(空格符)。
python的字符串內(nèi)建函數(shù)
字符串方法是從python1.6到2.0慢慢加進(jìn)來(lái)的——它們也被加到了Jython中滞详。
這些方法實(shí)現(xiàn)了string模塊的大部分方法凛俱,如下表所示列出了目前字符串內(nèi)建支持的方法紊馏,所有的方法都包含了對(duì)Unicode的支持,有一些甚至是專門用于Unicode的蒲犬。
string.capitalize() #把字符串的第一個(gè)字符大寫
string.center(width) #返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度 width 的新字符串
string.count(str, beg=0, end=len(string)) #返回 str 在 string 里面出現(xiàn)的次數(shù)朱监,如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
string.decode(encoding='UTF-8', errors='strict') #以 encoding 指定的編碼格式解碼 string,如果出錯(cuò)默認(rèn)報(bào)一個(gè) ValueError 的 異 常 原叮, 除非 errors 指 定 的 是 'ignore' 或 者'replace'
string.encode(encoding='UTF-8', errors='strict') #以 encoding 指定的編碼格式編碼 string赫编,如果出錯(cuò)默認(rèn)報(bào)一個(gè)ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
string.endswith(obj, beg=0, end=len(string)) #?檢查字符串是否以 obj 結(jié)束奋隶,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束擂送,如果是,返回 True,否則返回 False.
string.expandtabs(tabsize=8) #把字符串 string 中的 tab 符號(hào)轉(zhuǎn)為空格唯欣,tab 符號(hào)默認(rèn)的空格數(shù)是 8嘹吨。
string.find(str, beg=0, end=len(string))檢測(cè) str 是否包含在 string 中,如果 beg 和 end 指定范圍境氢,則檢查是否包含在指定范圍內(nèi)蟀拷,如果是返回開始的索引值,否則返回-1
string.format()格式化字符串
string.index(str, beg=0, end=len(string))跟find()方法一樣萍聊,只不過(guò)如果str不在 string中會(huì)報(bào)一個(gè)異常.
string.isalnum()如果 string 至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
string.isalpha()如果 string 至少有一個(gè)字符并且所有字符都是字母則返回 True,否則返回 False
string.isdecimal()如果 string 只包含十進(jìn)制數(shù)字則返回 True 否則返回 False.
string.isdigit()如果 string 只包含數(shù)字則返回 True 否則返回 False.
string.islower()如果 string 中包含至少一個(gè)區(qū)分大小寫的字符问芬,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True寿桨,否則返回 False
還有很多此衅,就不一一貼出來(lái)了,具體可以看下面的參考資料的鏈接亭螟,第一個(gè)是中文的挡鞍、第二個(gè)是官方的、英文的媒佣。
參考資料: