肉渣教程

字符串

上一节 下一节

测试时,请先不要使用中文输入法,最后会介绍如何让字符串包含中文字符的。


什么是字符串?

如下代码所示变量a就是字符串类型。字符串(String)是由数字、字母、下划线等组成的一串字符;用粗俗的语言来说,字符串就是一串字符。

a = "zhuanfou.com"

运行一下


再多举一些例子,下面的变量都属于字符串类型。

a = "zhuanfou666"
b = 'zhuanfou666'
c = "zhuanfou666"

运行一下

定义字符串的方式

Python中常用定义字符串的方式是引号;单引号和双引号都可以。

a = "zhuanfou"
b = 'zhuanfou'

运行一下


连续使用三个相同的引号,可以定义多段文字作为字符串;单引号和双引号都可以。

a = '''zhuanfou
3.1415926
-_-
123456789'''

运行一下

空的字符串

Python中空的字符串,即字符串长度为零,不含有字符。如下所示,变量a和变量b都是空字符串。

a = ""
b = ''

运行一下

字符串加法

Python中,字符串之间的运算符+,代表的是将字符串首尾连接;如下所示,变量a的值会等于字符串"zhuanfou",变量b的值会等于字符串"123"

a = "zhuan" + "fou"
b = "1" + "2" + "3"

运行一下

字符串乘法

Python中,字符串之间的运算符*,代表的是将指定字符串,重复指定次数,并相互连接。在下例中,a的值就是将3个字符串"6"相互连接,得到字符串"666"

a = "6" * 3

运行一下

将数字转换成字符串

使用python的内置函数str()即可将指定数字转换成字符串类型。

a = 666
b = 6.66

string_a = str(a)
string_b = str(b)

运行一下

字符串长度

使用python的内置函数len()即可获得指定字符串的长度。

length = len("zhuanfou")

运行一下

获得字符串指定位置的字符

如下所示,可通过索引来获得字符串指定位置的字符。(索引从0开始)

a = "zhuanfou"
print a[0]
print a[2]

运行一下


延伸学习一下,利用for循环依次输出字符串中的每个字符;试试呗:

a = "zhuanfou"
for c in a:
   print c

运行一下

字符串内置方法 count

字符串内置方法count可用来统计该字符串中出现指定子串的次数,若没有出现过指定子串,则返回0。

times = "zhuanfou-fou-fou".count( "fou" )

运行一下

字符串内置方法 find

字符串内置方法find可用来找到指定子串的第一次出现的位置,若该子串从来没有出现过,则返回-1。

position1 = "zhuanfou".find( "fou" )
position2 = "fanqingfuming".find( "fou" )

运行一下

字符串内置方法 split

字符串内置方法split可将字符串按指定分割符划分,返回的是由分隔出的字符串而构成的列表对象。默认分隔符为空格。

>>> "zhuan fuo 666".split()
['zhuan', 'fuo', '666']

>>> "d.zhuanfou.com".split( "." )
['d', 'zhuanfou', 'com']

>>> "123-_-321-_-abc".split( "-_-" )
['123', '321', 'abc']

运行一下

去除首尾空格 strip

字符串的内置方法strip可用来去除字符串首尾两端所有的空格;lstrip方法可以去除字符串左侧开头所有的空格,rstrip方法可以去除字符串右侧结尾所有的空格。(lstrip可以理解成“left strip”的缩写,rstrip可以理解成“right strip”的缩写。)

>>> "   zhuan fou   ".strip()
'zhuan fou'
>>> "   zhuan fou   ".lstrip()
'zhuan fou   '
>>> "   zhuan fou   ".rstrip()
'   zhuan fou'

运行一下

字符串大小转换

字符串内置方法upper可将指定字符串中的小写字母转换成大写字母,如下例所示:

>>> "zhuanfou666".upper()
'ZHUANFOU666'

运行一下


字符串内置方法lower可将指定字符串中的大写字母转换成小写字母,如下例所示:

>>> "ZHUANFOU666".lower()
'zhuanfou666'

运行一下

字符转义

如果想在字符串中置入引号,若情况比较简单,可用双引号标记具有单引号的字符串,用单引号标记具有双引号的字符串。

a = "I'm a jerk."
b = 'She said, "Yes."'

运行一下


但若需要在字符串中同时置入单引号和双引号时,这时,最佳解决方案就是使用转义序列。python中常用的转义序列如下所示:

转义序列 说明
\' 单引号
\" 双引号
\\ 反斜杠
\n 换行
\r 回车
\t 水平制表
\v 垂直制表


如下例所示:

a = "zhuan\nfou"
print a

运行一下


不管是字符串中使用到中文字符,还是在python程序的注释中使用到中文字符,若无提前声明,一般来说都会报错,如下所示,只要程序中出现中文输入法输出的字符,请先在程序开始处,写上“#coding=utf-8”这段代码就ok啦。


涉及中文字符的措施

只要python程序中出现中文字符,不管是字符串中出现,还是程序的注释中出现中文输入法输出的字符,都需要提前在python程序的开始部分,对程序的编码格式进行声明。如下所示,添加上#coding=utf-8这段代码即可。

# coding=utf-8

a = "反清复明"
print a

运行一下

unicode字符串

既然说到了中文字符,就不得不提unicode字符串。(关于unicode的详情点击这里)先看看在python中是如何定义unicode类型字符串?

使用u加上引号来定义;如下所示变量a和变量b都是unicode类型字符串:

a = u"地振高冈,一派西山千古秀"
b = u'门朝大海,三合河水万年流'

运行一下


如下述交互环境的python代码所示,可对比一下python中str类型字符串和unicode类型字符串:

>>> # coding=utf-8
...
>>> a = "反清复明"
>>> b = u"反清复明"
>>> a
'\xe5\x8f\x8d\xe6\xb8\x85\xe5\xa4\x8d\xe6\x98\x8e'
>>> b
反清复明
>>>
>>> type( a )
<type 'str'>
>>> type( b )
<type 'unicode'>
>>>
>>> print len(a), a[0]
12 \xe5
>>> print len(b), b[0]
4 反

备注:抱歉,目前python2的专否沙盒关于unicode类型字符串会有一些bug,请尽量使用本地python环境来测试unicode字符串。


字符串

上一节 下一节