python基础系列之字符串函数及操作
写在前面
此文为本人在学习python过程中,整理出来的学习笔记。主要参考书目有:
1、《python编程:从入门到实践》;
2、《python学习手册》;
3、《像计算机科学家一样思考Python》
一、字符串简介与书写
在python 3中,有三种类型的字符串:str用于Unicode文本,bytes用于二进制数据,bytearray是bytes的变体。
1.字符串的书写
python中用引号包裹起来的都为字符串类型,如:
#单引号:
'spam'
#双引号
"spam"
#三引号
'''spam'''
单引号与双引号作用一样,可互换。之所以要有这两种一样的表达式是因为可避免在字符串中出现引号时,就必须使用转义字符。如:
'knigth''s'
注意在两个字符串中间加上引号会使其变为元组!
a = 'python' , 'jave'
print(a)
print(type(a))
'''
运行结果为:
('python', 'jave')
<class 'tuple'>
'''
2.制表符
python中字符串书写时注意制表符的运用。
s = 'ab\tc'
'''
结果为:
ab c
'''
常见制表符有:
简单示例:
strr = '使用制表符的意义:\n\t可使文本更加规范。'
print(strr)
'''
结果为:
使用制表符的意义:
可使文本更加规范。
'''
3.取消转义
有时制表符会让代码运行时产生歧义,这时既需要取消转义,常用的有raw与\。如:
myfilepath = 'c:\ew\text.date' #\t为制表符
print(myfilepath)
'''
运行结果为:
c:\ew ext.date #代码运行时产生歧义
'''
#取消转义
myfilepath = r'c:\ew\text.date' #r必须紧跟第一个引号
print(myfilepath)
'''
运行结果为:
c:\ew\text.date
'''
#用\取消转义
path = 'c:\ew\\text.date'
print(path)
'''
运行结果为:
c:\ew\text.date
'''
二、字符串的基本操作
字符串的基本操作
1.字符串长度、拼接、重复操作:
#计算字符串长度
print(len('abcd'))
#字符串拼接
print('abc'+'efg') #注:拼接的两个必须都为字符串
#字符串重复
print('a'*4)
'''
运行结果为:
4
abcefg
aaaa
'''
2.For 循环及 in 表达:
For 循环
myjob = 'hecker'
for word in myjob:
print(word)
'''
运行结果为:
h
e
c
k
e
r
'''
注意还有下面的一种用法:
myjob = 'hecker'
for word in myjob:
print(word,end = ' ')
'''
运行结果为:h e c k e r
'''
In 返回的为布尔值,及True和False:
myjob = 'hecker'
print('h' in myjob)
print('d' in myjob)
'''
运行结果为:
True
False
'''
3.索引及切片:
s = 'spam'
print(s[0]) #第一位为0
#结果为:s
print(s[1:3]) #及从spam的1位开始但不包括3位
#结果为:pa
print(s[-1]) #最后一位,负偏移意味着从右反向计数
#结果为:m
print(s[1:]) #从1位开始直到最后一位
#结果为:pam
print(s[:3]) #从0位开始到3位(不含第三位)
#结果为:spa
print(s[:]) #全部位
#结果为:spam
切片的步长:及切片操作包含一个可选的步长参数。如:
strr = '1234567890'
print(strr[0:8:2])
#结果为:1357
3.1 反向切片的应用
切片两边的数值一般来说需从小到大:
strr = '0123456789'
print(strr[0:8])
#运行结果为:01234567
print(strr[8:0])
#运行结果为空字符串
print(strr[4:0:-1]) #及完成了从4位到0位(不包括0位的反向切片)
#运行结果为:4321
4.字符串转换
在一定条件下,字符串与其他类型数据之间可进行转化:
最常用的函数有:
int():将符合格式的对象转化为整数;
str():将对象转化为字符串
float():将符合格式的对象转化为浮点数
a = '42'
b = int(a) #将符合格式的字符串转化为整数
print(type(a))
print(type(b))
'''
运行结果为:
<class 'str'>
<class 'int'>
'''
4.1 ord与chr函数
ord函数将单个字符转化为对应的ASCII码,chr函数则起到相反作用。
print(ord('s'))
#运行结果:115
print(chr(115))
#运行结果:s
5.字符串的修改
字符串属于‘不可变序列’,一般来说不允许直接修改,如:
s = 'spam'
s[0] = 'x'
#报错:'str' object does not support item assignment
但是可以通过对变量的赋值与字符串切片相结合的操作,来达到修改的目的。如:
s = 'spam'
s = 'x' + s[1:]
print(s)
#运行结果为:xpam
也可通过replace函数对字符串进行替换操作:
s = 'spam'
s = s.replace('s','xxx')
print(s)
#运行结果为:xxxpam
6.字符串的格式化
有时在书写文本过程中需要对其中有些内容进行格式化,以达到想要输出的结果。如:
number = 2
food = '香蕉'
print('早上我一般喜欢吃%d个%s。' % (number,food))
#运行结果:早上我一般喜欢吃2个香蕉。
注意以下的用法所导致不同的结果!
a = 1.2353456
b = 2
c = 3
print('a的值为:%.2f,b的值为:%2d,c的值为:%.2d' % (a,b,c))
#运行结果为:a的值为:1.24,b的值为: 2,c的值为:03
6.1 基于字典的字符串格式化
strr = '''
大家好,
我的名字是%(name)s,
年龄是%(age)s岁'''
dict1= {
'name' : '小明',
'age' : '21'
}
print(strr % dict1)
运行结果为:
大家好,
我的名字是小明,
年龄是21岁
三、字符串方法
常用的字符串方法:
1.find方法
find方法用来寻找字符串中是否包含所查找对象,如包含则返回其所在位置(第一次出现的位置),不包含则返回-1:。如:
s = 'spam'
result_1 = s.find('p')
result_2 = s.find('b')
print(result_1)
#运行结果为:1
print(result_2)
#运行结果为:-1
又如:
strr = 'xxspspspam'
result = strr.find('sp')
print(result)
#运行结果:2
1.1 利用find方法达到修改字符串的目的
可利用find方法与切片相结合,达到在指定位置修改字符串的目的。如:
strr = '今天早上我吃了两个包子,但是还是没吃饱!'
print(strr)
#运行结果:今天早上我吃了两个包子,但是还是没吃饱!
where = strr.find('包子')
strr = strr[:where] + '馒头' + strr[where+2:]
print(strr)
#运行结果:今天早上我吃了两个馒头,但是还是没吃饱!
2.list,join方法
2.1 list方法
list方法可直接将字符串转化为列表。如:
strr = 'spam'
list_1 = list(strr)
print(list_1)
#运行结果为:['s', 'p', 'a', 'm']
2.2 join方法
jion方法可将字符串转化为列表。如:
list1 = ['s', 'p', 'a', 'm']
strr1 = ''.join(list1)
print(strr1)
#运行结果:spam
strr2 = '---'.join(list1) #引号内部为列表合并为字符串之间的分隔符
print(strr2)
#运行结果为:s---p---a---m
3 split方法
可用split方法对字符串进行切割,返回一个列表。如:
strr = '我想吃酸菜鱼;我想吃地锅鸡;我想吃炒米粉'
list1 = strr.split(';')
print(list1) #返回结果为列表
#运行结果为:['我想吃酸菜鱼', '我想吃地锅鸡', '我想吃炒米粉']
4 其他一些常用方法
4.1 strip 方法
rstrip方法用来去除字符串末尾多余的空白字符串。如:
strr = '我现在想吃地锅鸡。 '
print(strr.rstrip()) #去除末尾多余空白
#运行结果:我现在想吃地锅鸡。
lstrip方法用来去除字符串开头多余的空白字符串。如:
strr = ' 我现在想吃地锅鸡。'
print(strr.lstrip())
#运行结果为:我现在想吃地锅鸡。
strip方法则是用来去除字符串首位多余的空白字符串。如:
strr = ' 我现在想吃地锅鸡。 '
print(strr.strip())
#运行结果为:我现在想吃地锅鸡。
注:strip也可用来去除一些制表符,如:
strr = ' \n我现在想吃地锅鸡。\n '
print(strr)
#运行结果为:
'''
我现在想吃地锅鸡。
'''
print(strr.strip())
#运行结果为:我现在想吃地锅鸡。
4.2 upper方法
字母全部大写
line = 'The knights who say Ni!'
print(line.uppe)
#运行结果:THE KNIGHTS WHO SAY NI!
4.3 lower方法
字母全部小写
line = 'THE KNIGHTS WHO SAY NI!'
print(line.lower())
#运行结果:the knights who say ni!
4.4 title方法
是字符串想个的单个单词首字母大写,如:
line = 'the knights who say ni!'
print(line.title())
#运行结果:The Knights Who Say Ni!
4.5 count方法
计数,计数在字符串中出现的次数。如:
strr = 'aaa bbb ccc'
result = strr.count('a')
print(result)
#结果为:3
5 format方法
format方法也相当于是一种格式化方法,其简单的使用方法为:
template = '{0},{1} and {2}'
print(template.format('spam','ham','eggs'))
#运行结果为:spam,ham and eggs
strr = '今天天气很{weather},我今天很{mind}。'
print(strr.format(weather = '晴朗',mind = '开心'))
#运行结果为:今天天气很晴朗,我今天很开心。