今天开始学习字符串,字符串是 Python 中最常用的一种数据类型。还有字符串的一些操作也需要熟悉一下。
1.字符串的表示方式
a = 'hello'
a = "hello"
a = '''hello'''
a = """hello""" #三个引号表示多行字符串,多字符串可以使用制表符和换行符
print(a) #全部输出为:hello
Python中字符串有四种表达形式,分别是:
' '
," "
,''' '''
,""" """
;字符串是不可变的,一旦定义就不能改变
且字符串是可迭代对象(就是可循环?);
Python3中,字符串是Unicode编码;
2.Unicode 字符串
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u;
在Python3中,所有的字符串都是Unicode字符串。
3.Python转义字符
\:续行符;
\e:转义;
\n:换行;
\ \:反斜杠符号;
\ ":单引号;
\ ":双引号;
\000:空;
\v:纵向制表符;
\t:横向制表符;
\r:回车;
\f:换页;
\oyy:八进制数,yy代表的字符,例如:\o12代表换行;
xyy:十六进制数,yy代表的字符,例如:\x0a代表换行;
\other:其它的字符以普通格式输出;
4.python字符串格式化符号
%c:格式化字符及其ASCII码;
%s:格式化字符串;
%d:格式化整数;
%u:格式化无符号整型;
%o:格式化无符号八进制数;
%x:格式化无符号十六进制数;
%X:格式化无符号十六进制数(大写);
%f:格式化浮点数字,可指定小数点后的精度;
%e:用科学计数法格式化浮点数;
%E:作用同%e,用科学计数法格式化浮点数;
%g:%f和%e的简写;
%G:%f 和 %E 的简写;
%p:用十六进制数格式化变量的地址;
5.字符串的访问
- Python中,字符串也能通过索引访问;
a = "helloWorld"
print(a[1]) #输出:1
- 字符串还能通过 for 循环访问;
a = "helloWorld"
for item in a:
print(item)
#输出:
h
e
l
l
o
W
o
r
l
d
6.字符串的连接
- 字符串之间直接相加;
a = 'hi'
b = ','
c = '你好'
print(a+b+c) #输出:hi,你好
- 使用 join方法进行拼接;
a = ['hi',',','你好']
b = ''.join(a)
print(b) #输出:hi,你好
7.字符串的切割
- split:使用 split 方法通过切割符从左向右进行切割,如果没有指定切割次数则全部切割,指定了切割次数则根 据指定的次数切割;
a = 'h,e,l,l,o'
b = a.split(',')
c = a.split(',', maxsplit=1)
print(b) #输出['h', 'e', 'l', 'l', 'o']
print(c) #输出['h', 'e,l,l,o']
- rsplit:和 split 方法类似,但是 rsplit 方法是从右向左开始切割;
a = 'h,e,l,l,o'
b = a.rsplit(',')
c = a.rsplit(',', maxsplit=1)
print(b) #输出['h', 'e', 'l', 'l', 'o']
print(c) #输出['h,e,l,l', 'o']
- splitlines:通过换行符 \n 进行切割,如果加上 True,那么换行符 \n 也会打印出来;
a = 'How do \nyou do ?'
b = a.splitlines()
c = a.splitlines(True)
print(b) #输出:['How do ', 'you do ?']
print(c) #输出:['How do \n', 'you do ?']
- partition:从左到右切割三段,分隔符为中间那段,如果只想获取三段中的某一段,那么可以把其他的段改为下划线 _ ;
string = '1,2,3,4,5'
a, seq, b = string.partition(',')
print(a) #输出:1
print(seq) #输出:,
print(b) #输出:2,3,4,5
8.字符串对象方法
string = 'abc ABC'
string.方法名()
upper:字符串转为大写;
lower:字符串转为小写;
swapcase:大小写交替,大写改小写,小写改大写;
title:字符串中所有单词首字母大写;
capitalize:整个字符串的首字母大写;
center:将字符串居中打印;
ljust:将字符串居左打印;
rjust:将字符串居右打印;
zfill:将字符串右对齐打印,左边默认为0填充;
9.字符串修改
- replace:字符串替换,第一个参数 old 指需要被替换的字符串,第二个参数 new 为替换字符串, 第三个参数 count 为指定的次数;
string = 'abc'
print(string.replace('a', 'A')) #输出:Abc
- strip:剔除两端的字符,参数 chars 为指定需要剔除的字符,chars 不指定则为剔除掉空白字符(空格);
string = 'abc'
print(string.strip('a')) 输出:bc
rstrip:剔除右边的字符;
lstrip:剔除左边的字符;
10.字符串查找
str = 'abcdefg'
print(str.find('c')) #输出:2
print(str.find('z')) #输出:-1
print(str.index('b')) #输出:1
print(str.index('z')) 报错:ValueError
print(str.count('c')) #输出:1
print(str.count('z')) #输出:0
find: 从左向右开始查找,参数sub为指定要查找的字符串,[start,end] 为查找开始和结束的索引,如果存在返回指定字符串的索引,不存在则返回-1;
index:如果存在返回需要查找的字符串的索引,不存在报错:ValueError;
count:返回字符出现的次数,不存在则输出0;
11.字符串判断
- 字符串判断方法有很多,都是用 string.方法 的格式来使用,返回的类型也都是 bool 型,正确则返回 True,错 误返回False;
#startswith(prefix[, start[, end]]) 是否以prefix开头
#endswith(suffix[, start[, end]]) 是否以suffix结尾
#isalnum() 是否是字母或数字
#isalpha() 是否是字母
#isdecimal() 是否是十进制
#isdigit() 是否是数字
#isidentifier() 是否是字母和下划线开头
#islower() 是否是小写
#isupper() 是否是大写
#isspace() 是否是全空白字符
12.字符串格式化
C语言风格:
print("how are %04d" % (100,)) # 输出:how are 0100
print('how are %s' % 'you') # 输出:how are you
print('%.3f' % (1.361578)) # 输出:1.362
print("how are %-5d" % (20,)) # 输出:how are 20
print("how are %5d" % (20,)) # 输出:how are 20
%d:整数占位符,例如%04d的意思是这个整数一共有四个占位符,不足的地方从左开始补0,就是右对齐,- 表示左对齐;
%s:字符串占位符;
%f: 浮点型;
Python format风格:
print('{}, {}'.format('hello', 'world')) #输出:hello, world
print('{0}, {1}'.format('hello', 'world')) #输出:hello, world
print('{a},{b}'.format(a='hello', b='world')) #输出:hello, world
占位:使用{}符号占位,可以根据{}里面的索引值来填充字符串,也可以根据关键字的形式填充;
对齐:< 表示左对齐、> 表示右对齐、0< 表示左对齐,其他地方补0、0> 表示右对齐,其他地方补0、^ 表示居中对齐、0^ 表示居中对齐,其他地方补0;
进制:二进制、八进制、十进制、十六进制;
本文参考自侠课岛(9xkd.com)Python同学计划