Python的字符与字符串
1 Python的字符类型
Python的字符类型为str
, 同时str
也是一个构造字符的函数. 还有另外三种构造字符的方式:
- 单引号
''
构造字符, 比如:'Hello world!', 'A'.
双引号
" "
构造字符, 比如:"Hello Dennis."
,"BIRL"
.虽然字符串和字符类型有两种(单引号
' '
和双引号" "
)表示方式, 但是建议统一使用双引号表示方式.
Python中字符和字符串的差异很小, 几乎没有差别, 如无特别说明, 本文用”字符”表示字符串和字符.三重引号
''' '''
构造字符, 这与其他语言有不同, 三重引号会记录任何输入的信息, 包括制表符\t
,引号'
, 回车\n
等(注意! 必须要以'''
结尾, Python解释器才能识别三重引号输入完成), 同时三重引号还可以在.py脚本编辑时充当多行注释.
2 非显示字符 & 字符序列
2.1 通用非显示字符
非显示字符 | |
---|---|
回车符 | \n |
制表符 | \t |
通常字符是以ASCII码表示的, Python中有两个特殊的函数用于捕获字符和ASCII码之间的关系:
ord( )
函数: 显示字符对应的ASCII码.
>>> ord("a")
>>> 97
>>> ord("Ha") # 这是错误语句, ord( )函数的参数只能是一个字符, 不能是字符串.
chr( )
函数: 显示对应ASCII码的字符.
>>> chr(97)
>>> 'a'
2.2 字符序列
字符串对象定义为字符序列, Python使用索引运算符[ ]
, 查看字符串序列的每一单字符.
>>> string = "Dennis is BIRL lab member."
>>> string
'Dennis is BIRL lab member.'
>>> string[0]
'D'
>>> string[1]
'e'
>>> string[-1]
'.'
Python的索引[ ]
运算符能够适用于所有的集合, 索引[ ]
运算符有三个参数, 其中后两个为可选参数:
运算符格式参数: [起始索引:终止索引:索引步长]
>>> string = "Denis is BIRL lab member."
>>> string[:]
'Dennis is BIRL lab member.'
>>> string[2:8]
'nnis i'
>>>string[0:8:2]
'Dni '
3 字符操作
3.1 字符连接和重复
- 连接符
+
:+
需要两个字符对象, 得到一个新字符, 由前面的字符首尾连接而成.
>>> string = "Dennis is BIRL lab member."
>>> string1 = "Hello BIRL!"
>>> string + string1
'Dennis is BIRL lab member.Hello BIRL!'
- 重复符
*
:*
运算需要一个字符和一个整数, 产生的新字符为原来字符重复整数次.
>>> string1 = "Hello BIRL!"
>>> string1 * 2
'Hello BIRL!Hello BIRL!'
type()
函数可以用于任何对象的检查, 返回值为对象的类型.
>>> string1 = "Hello BIRl!"
>>> type(string1)
<type 'str'>
>>> type(2)
<type 'int'>
3.2 字符比较和检查
- 字符比较
布尔运算符 | 运算结果为True or Flase |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
如上比较运算符均能用于字符或者字符串的比较, 比较的本质是转换成ASCII码比较, 如果为字符串则对字符串进行逐一比较.返回值为True
或者False
.
>>> "a" == "a"
True
>>> "a" != "b"
True
"a" > "b"
False
"abc" > "abcd"
False
>>>
- 字符检查
in
运算符用于检查集合成员. 返回值为True
或者False
.
>>> string = "Dennis is BIRL lab member."
>>> "D" in string
True
>>> "Dennis" in string
True
字符串集合是不可改变的, 若程序尝试通过索引修改字符串, Python解释器将报错. 如果需要修改字符串集合则需要重赋值的方式修改.
4 字符函数与方法
Python有很多处理字符的字符函数, 还有一类特殊函数,称为方法.
4.1 字符函数 & 格式化输出
字符串函数比字符串方法少很多, 后续将介绍更多的字符串函数.
>>> string = "hello BIRl!"
>>> len(string)
11
>>> len("a")
1
我们可是使用print
函数输出字符串, 下面通过格式化输出方式, 以多种形式输出.
print
函数的格式化输出基本语法:
>>> print "Dennis is %s lab member." % ("BIRL")
Dennis is BIRL lab member.
- 双引号中
%
开头的特殊字符, 表示格式化输出对象的位置和格式. - 双引号外的
%
, 表示分隔符, 分隔print
函数与后面的元组.
常用格式输出 | |
---|---|
%s | 字符换 |
%d | 十进制整数 |
%f | 浮点小数 |
%e | 浮点指数 |
每一条命令后面还可增加特定的详细的信息:
%[name][flags][width][.precision]code
>>> print "%s is %4d years old." % ("Dennis" , 25)
Dennis is 25 years old.
>>> print "pi = %.4f" % (3.141592654)
pi = 3.1416
4.2 字符方法
方法是函数的变形, 只是调用方式不一样. 每一种方法要结合特定的对象进行调用. 字符对象有字符对象的方法, 整数对象有整数的方法, 方法采用”点调用” (.
) 的方式表示, 同时方法还和函数一样, 可以选择参数.以upper( )
转换字符为大写find( )
查找子对象为例:
>>> string = "Dennis is BIRL lab member."
>>> string.upper()
'DENNIS IS BIRL LAB MEMBER.'
>>> string.find("Dennis")
0
>>> string.find("e")
1
4.3 方法链
Python语言具有一种强大的功能, 既可以链接方法和函数. 它使用一系列”点标记”实现链接. 链接的意义在于: 从一个方法返回的对象可以用于另一种方法的主调对象. 主调对象顺序的规则是从左到右, 使用前一个方法产生的对象. 以上面两个方法:upper( )
和find( )
为例:
其中find( )
方法有参数fand(需查找的字符,起始查找位置,停止查找位置)
>>> string = "Dennis is BIRL lab member."
>>> string.upper()
'DENNIS IS BIRL LAB MEMBER.'
>>> string.upper().find("E")
1
>>> string.upper().find("E",string.upper().find("E")+1) # 方法可以嵌套
20
下面是一些常用的字符串方法, [ ]
表示可选参数.
常用字符串方法 | |
---|---|
capitalize() | lstrip([chars]) |
center(width [,fillchar]) | partition(seq) |
count(sub[,start[,end]]) | replace(old, new[,count]) |
decode([encoding[,errors]]) | rfind(sub[,start[,end]]) |
endswith(suffix[,start[,end]]) | rindex(sub[,start[,end]]) |
find(sub[,start[,end]]) | rjust(widtb[,fillchar]) |
index(sub[,start[,end]]) | rpartition(seq) |
isalnum() | rstrip([chars]) |
isalpha() | split(sep[,maxsplit]) |
isdigit() | splitlines([keepends]) |
islower() | starswith(prefix[,start[,end]]) |
isspace() | strip([chars]) |
istitle() | swapcse() |
isupper() | title() |
join (seq) | translate(table[,deletechars]) |
lower() | upper() |
ljust (width [,fillchar]) | zfill (width) |