Python 字符串

字符串是 Python 中最常用的数�类型。我们�以使用引� ( ' 或 " ) �创建字符串。

创建字符串很简�,��为��分�一个值��。例如:

var1 = 'Hello World!'
var2 = "Python Runoob"

Python 访问字符串中的值

Python �支��字符类型,�字符在 Python 中也是作为一个字符串使用。

Python 访问�字符串,�以使用方括��截�字符串,如下实例:

实例(Python 2.0+)

#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Runoob" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]

以上实例执行结果:

var1[0]:  H
var2[1:5]:  ytho

Python 字符串连接

我们�以对字符串进行截�并与其他字符串进行连接,如下实例:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- var1 = 'Hello World!' print "输出 :- ", var1[:6] + 'Runoob!'

以上实例执行结果

输出 :-  Hello Runoob!

Python 转义字符

在需�在字符中使用特殊字符时,python 用�斜� \ 转义字符。如下表:

转义字符�述
\(在行尾时) 续行符
\\ �斜�符�
\' �引�
\" �引�
\a �铃
\b 退格(Backspace)
\e 转义
\000 空
\n �行
\v 纵�制表符
\t 横�制表符
\r 回车
\f �页
\oyy 八进制数,y 代表 0~7 的字符,例如:\012 代表�行。
\xyy �六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表�行
\other 其它的字符以普通格�输出

Python字符串�算符

下表实例�� a 值为字符串 "Hello",b ��值为 "Python":

�作符�述实例
+字符串连接
>>>a + b 'HelloPython'
*��输出字符串
>>>a * 2 'HelloHello'
[]通过索引获�字符串中字符
>>>a[1] 'e'
[ : ]截�字符串中的一部分
>>>a[1:4] 'ell'
in�员�算符 - 如果字符串中包�给定的字符返回 True
>>>"H" in a True
not in �员�算符 - 如果字符串中�包�给定的字符返回 True
>>>"M" not in a True
r/R原始字符串 - 原始字符串:所有的字符串都是直接按照字�的���使用,没有转义特殊或�能打�的字符。 原始字符串除在字符串的第一个引��加上字�"r"(�以大�写)以外,与普通字符串有�几乎完全相�的语法。
>>>print r'\n' \n >>> print R'\n' \n
%格�字符串请看下一章节

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = "Hello" b = "Python" print "a + b 输出结果:", a + b print "a * 2 输出结果:", a * 2 print "a[1] 输出结果:", a[1] print "a[1:4] 输出结果:", 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'

以上程�执行结果为:

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在�� a 中
M �在�� a 中
\n
\n

Python 字符串格�化

Python 支�格�化字符串的输出 。尽管这样�能会用到�常��的表达�,但最基本的用法是将一个值�入到一个有字符串格�符 %s 的字符串中。

在 Python 中,字符串格�化使用与 C 中 sprintf 函数一样的语法。

如下实例:

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

以上实例输出结果:

My name is Zara and weight is 21 kg!

python 字符串格�化符�:

    符   å�· æ��è¿°
      %c æ ¼å¼�化字符å�Šå…¶ASCIIç �
      %s æ ¼å¼�化字符串
      %d æ ¼å¼�化整数
      %u æ ¼å¼�化无符å�·æ•´åž‹
      %o æ ¼å¼�化无符å�·å…«è¿›åˆ¶æ•°
      %x æ ¼å¼�化无符å�·å��六进制数
      %X æ ¼å¼�化无符å�·å��六进制数(大写)
      %f æ ¼å¼�化浮点数字,å�¯æŒ‡å®šå°�数点å�Žçš„精度
      %e ç”¨ç§‘学计数法格å¼�化浮点数
      %E ä½œç”¨å�Œ%e,用科学计数法格å¼�化浮点数
      %g %få’Œ%e的简写
      %G %F å’Œ %E 的简写
      %p ç”¨å��六进制数格å¼�化å�˜é‡�的地å�€

格�化�作符辅助指令:

符�功能
*定义宽度或者�数点精度
-用�左对�
+在正数��显示加�( + )
<sp>在正数��显示空格
# 在八进制数��显示零('0'),在�六进制��显示'0x'或者'0X'(�决于用的是'x'还是'X')
0 显示的数字��填充'0'而�是默认的空格
% '%%'输出一个�一的'%'
(var)映射��(字典�数)
m.n. m 是显示的最�总宽度,n 是�数点�的�数(如果�用的�)

Python2.6 开始,新增了一�格�化字符串的函数 str.format(),它增强了字符串格�化的功能。


Python 三引�

Python 中三引��以将��的字符串进行赋值。

Python 三引��许一个字符串跨多行,字符串中�以包��行符�制表符以�其他特殊字符。

三引�的语法是一对连续的�引�或者�引�(通常都是�对的用)。

 >>> hi = '''hi 
there'''
>>> hi   # repr()
'hi\nthere'
>>> print hi  # str()
hi 
there  

三引�让程�员从引�和特殊字符串的泥潭里�解脱出�,自始至终��一��字符串的格�是所谓的WYSIWYG(所��所得)格�的。

一个典型的用例是,当你需�一�HTML或者SQL时,这时当用三引�标记,使用传统的转义字符体系将�分费神。

 errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

Unicode 字符串

Python 中定义一个 Unicode 字符串和定义一个普通字符串一样简�:

>>> u'Hello World !'
u'Hello World !'

引���写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,�以使用 Python 的 Unicode-Escape 编�。如下例所示:

>>> u'Hello\u0020World !'
u'Hello World !'

被替�的 \u0020 标识表示在给定�置�入编�值为 0x0020 的 Unicode 字符(空格符)。


Python 的字符串内建函数

字符串方法是从 Python1.6 到 2.0 慢慢加进�的 —— 它们也被加到了Jython 中。

这些方法实现了 string 模�的大部分方法,如下表所示列出了目�字符串内建支�的方法,所有的方法都包�了对 Unicode 的支�,有一些甚至是专门用于 Unicode 的。

方法 �述

string.capitalize()

把字符串的第一个字符大写

string.center(width)

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

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

返回 str 在 string 里�出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

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

以 encoding 指定的编�格�解� string,如果出错默认报一个 ValueError 的 异 常 , 除� errors 指 定 的 是 'ignore' 或 者'replace'

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

以 encoding 指定的编�格�编� string,如果出错默认报一个ValueError 的异常,除� errors 指定的是'ignore'或者'replace'

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

检查字符串是�以 obj 结�,如果beg 或者 end 指定则检查指定的范围内是�以 obj 结�,如果是,返回 True,�则返回 False.

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符�转为空格,tab 符�默认的空格数是 8。

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

检测 str 是�包�在 string 中,如果 beg 和 end 指定范围,则检查是�包�在指定范围内,如果是返回开始的索引值,�则返回-1

string.format()

格�化字符串

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

跟find()方法一样,��过如果str�在 string中会报一个异常.

string.isalnum()

如果 string 至少有一个字符并且所有字符都是字�或数字则返

回 True,�则返回 False

string.isalpha()

如果 string 至少有一个字符并且所有字符都是字�则返回 True,

�则返回 False

string.isdecimal()

如果 string �包��进制数字则返回 True �则返回 False.

string.isdigit()

如果 string �包�数字则返回 True �则返回 False.

string.islower()

如果 string 中包�至少一个区分大�写的字符,并且所有这些(区分大�写的)字符都是�写,则返回 True,�则返回 False

string.isnumeric()

如果 string 中�包�数字字符,则返回 True,�则返回 False

string.isspace()

如果 string 中�包�空格,则返回 True,�则返回 False.

string.istitle()

如果 string 是标题化的(� title())则返回 True,�则返回 False

string.isupper()

如果 string 中包�至少一个区分大�写的字符,并且所有这些(区分大�写的)字符都是大写,则返回 True,�则返回 False

string.join(seq)

以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)�并为一个新的字符串

string.ljust(width)

返回一个原字符串左对�,并使用空格填充至长度 width 的新字符串

string.lower()

转� string 中所有大写字符为�写.

string.lstrip()

截掉 string 左边的空格

string.maketrans(intab, outtab)

maketrans() 方法用于创建字符映射的转�表,对于接�两个�数的最简�的调用方�,第一个�数是字符串,表示需�转�的字符,第二个�数也是字符串表示转�的目标。

max(str)

返回字符串 str 中最大的字�。

min(str)

返回字符串 str 中最�的字�。

string.partition(str)

有点� find()和 split()的结�体,从 str 出现的第一个�置起,把 字 符 串 string 分 � 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中�包�str 则 string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

把 string 中的 str1 替�� str2,如果 num 指定,则替��超过 num 次.

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

类似于 find() 函数,返回字符串最�一次出现的�置,如果没有匹�项则返回 -1。

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

类似于 index(),�过是返回最�一个匹�到的�字符串的索引�。

string.rjust(width)

返回一个原字符串�对�,并使用空格填充至长度 width 的新字符串

string.rpartition(str)

类似于 partition()函数,�过是从�边开始查找

string.rstrip()

删除 string 字符串末尾的空格.

string.split(str="", num=string.count(str))

以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个�字符串

string.splitlines([keepends])

按照行('\r', '\r\n', '\n')分隔,返回一个包��行作为元素的列表,如果�数 keepends 为 False,�包��行符,如果为 True,则�留�行符。

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

检查字符串是�是以 obj 开头,是则返回 True,�则返回 False。如果beg 和 end 指定值,则在指定范围内检查.

string.strip([obj])

在 string 上执行 lstrip()和 rstrip()

string.swapcase()

翻转 string 中的大�写

string.title()

返回"标题化"的 string,就是说所有��都是以大写开始,其余字��为�写(� istitle())

string.translate(str, del="")

根� str 给出的表(包� 256 个字符)转� string 的字符,

�过滤掉的字符放到 del �数中

string.upper()

转� string 中的�写字�为大写

string.zfill(width)

返回长度为 width 的字符串,原字符串 string �对�,��填充0