Python学习打call第九天:字符串

今天开始学习字符串,字符串是 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同学计划

推荐阅读更多精彩内容