String
模塊包含大量實用常量和類,以及一些過時的遺留功能,并還可用作字符串操作。
1. 常用方法
str.capitalize()
把字符串的首字母大寫
str.center(width)
將原字符串用空格填充成一個長度為
width
的字符串,原字符串內(nèi)容居中
str.count(s)
返回字符串
s
在
str
中出現(xiàn)的次數(shù)
str.decode(encoding=’UTF-8’,errors=’strict’)
以指定編碼格式解碼字符串
str.encode(encoding=’UTF-8’,errors=’strict’)
以指定編碼格式編碼字符串
str.endswith(s)
判斷字符串
str
是否以字符串
s
結(jié)尾
str.find(s)
返回字符串
s
在字符串
str
中的位置索引,沒有則返回
-1
str.index(s)
和
find()
方法一樣,但是如果
s
不存在于
str
中則會拋出異常
str.isalnum()
如果
str
至少有一個字符并且都是字母或數(shù)字則返回
True,
否則返回
False
str.isalpha()
如果
str
至少有一個字符并且都是字母則返回
True,
否則返回
False
str.isdigit()
如果
str
只包含數(shù)字則返回
True
否則返回
False
str.islower()
如果
str
存在區(qū)分大小寫的字符,并且都是小寫則返回
True
否則返回
False
str.isspace()
如果
str
中只包含空格,則返回
True
,否則返回
False
str.istitle()
如果
str
是標(biāo)題化的
(
單詞首字母大寫
)
則返回
True
,否則返回
False
str.isupper()
如果
str
存在區(qū)分大小寫的字符,并且都是大寫則返回
True
否則返回
False
str.ljust(width)
返回一個原字符串左對齊的并使用空格填充至長度
width
的新字符串
str.lower()
轉(zhuǎn)換
str
中所有大寫字符為小寫
str.lstrip()
去掉
str
左邊的不可見字符
str.partition(s)
用
s
將
str
切分成三個值
str.replace(a, b)
將字符串
str
中的
a
替換成
b
str.rfind(s)
類似于
find()
函數(shù),不過是從右邊開始查找
str.rindex(s)
類似于
index()
,不過是從右邊開始
str.rjust(width)
返回一個原字符串右對齊的并使用空格填充至長度
width
的新字符串
str.rpartition(s)
類似于
partition()
函數(shù)
,
不過是從右邊開始查找
str.rstrip()
去掉
str
右邊的不可見字符
str.split(s)
以
s
為分隔符切片
str
str.splitlines()
按照行分隔,返回一個包含各行作為元素的列表
str.startswith(s)
檢查字符串
str
是否是以
s
開頭,是則返回
True
,否則返回
False
str.strip()
等于同時執(zhí)行
rstrip()
和
lstrip()
str.title()
返回
”
標(biāo)題化
”
的
str,
所有單詞都是以大寫開始,其余字母均為小寫
str.upper()
返回
str
所有字符為大寫的字符串
str.zfill(width)
返回長度為
width
的字符串,原字符串
str
右對齊,前面填充
0
2.字符串常量
string.ascii_lowercase
小寫字母
’abcdefghijklmnopqrstuvwxyz’
string.ascii_uppercase
大寫的字母
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.ascii_lettersascii_lowercase
和
ascii_uppercase
常量的連接串
string.digits
數(shù)字
0
到
9
的字符串
:’0123456789’
string.hexdigits
字符串
’0123456789abcdefABCDEF’
string.letters
字符串
’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.lowercase
小寫字母的字符串
’abcdefghijklmnopqrstuvwxyz’
string.octdigits
字符串
’01234567’
string.punctuation
所有標(biāo)點字符
string.printable
可打印的字符的字符串。包含數(shù)字、字母、標(biāo)點符號和空格
string.uppercase
大學(xué)字母的字符串
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.whitespace
空白字符
‘\t\n\x0b\x0c\r ‘
3.字符串模板Template
通過string.Template
可以為
Python
定制字符串的替換標(biāo)準(zhǔn)
,
下面是具體列子:
>>>from string import Template>>>s = Template('$who like $what')>>>print s.substitute(who='i', what='python')
i like python
>>>print s.safe_substitute(who='i') #
缺少
key
時不會拋錯
i like $what
>>>Template('${who}LikePython').substitute(who='I') #
在字符串內(nèi)時使用
{}'ILikePython'
Template
還有更加高級的用法,可以通過繼承
string.Template,
重寫變量
delimiter(
定界符
)
和
idpattern(
替換格式
),
定制不同形式的模板。
import string
template_text = ''' Delimiter : $de Replaced : %with_underscore Ingored : %notunderscored '''
d = {'de': 'not replaced',
'with_underscore': 'replaced',
'notunderscored': 'not replaced'}
class
MyTemplate(string.Template):
#
重寫模板 定界符
(delimiter)
為
"%",
替換模式
(idpattern)
必須包含下劃線
(_)
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
print string.Template(template_text).safe_substitute(d) #
采用原來的
Template
渲染
print MyTemplate(template_text).safe_substitute(d) #
使用重寫后的
MyTemplate
渲染
輸出:
Delimiter : not replaced
Replaced : %with_underscore
Ingored : %notunderscored
Delimiter : $de
Replaced : replaced
Ingored : %notunderscored
原生的Template
只會渲染界定符為
$
的情況,重寫后的
MyTemplate
會渲染界定符為
%
且替換格式帶有下劃線的情況。
4.常用字符串技巧
· 1.
反轉(zhuǎn)字符串
>>> s = '1234567890'
>>> print s[::-1]
0987654321
· 2.
關(guān)于字符串鏈接
盡量使用join()
鏈接字符串,因為
’+’
號連接
n
個字符串需要申請
n-1
次內(nèi)存
,
使用
join()
需要申請
1
次內(nèi)存。
· 3.
固定長度分割字符串
>>>
import re
>>> s = '1234567890'
>>> re.findall(r'.{1,3}', s) #
已三個長度分割字符串
['123', '456', '789', '0']
·4.
使用
()
括號生成字符串
sql = ('
SELECT
count()
FROM
table '
'
WHERE
id = "10" '
'
GROUP
BY sex')
print sql
SELECT count() FROM table WHERE id = "10" GROUP BY sex
· 5.
將
print
的字符串寫到文件
>>> print >> open("somefile.txt", "w+"), "Hello World" # Hello World
將寫入文件
somefile.tx
來源:
伯樂在線
|