Python字符串——表示、转义、查找、判断、替换、格式化输出

字符串的表示方式

在 Python里,可以使用一对单引号,一对双引号或者一对三个双引号、一对三个单引号,来表示字符串。

a = 'hello'
b = "good"
c = """呵呵呵"""
d = '''嘿嘿嘿'''
字符串里的转义字符

简单说就是使用"\让输出显示\"后的有特殊含义的的字符

显示一个普通的单引号

x = 'I\'m xiaoming'

显示一个双引号

y = "xiaoming  said:"'\"I am xiaoming\"'

显示一个反斜杠

x2 = 'good mor\\ning'
字符串的下标和切片

下标又称为索引,表示第几个数据。在计算机里,下标都是从0开始的,也就是说第一个数的下标是0。

在Python里,可以通过下标来获取或者修改指定位置的数据。字符串是不可变数据类型,对字符串的任何操作,都不会改变原有的字符串

word = 'zhangsan'
print(word[4])  #输出结果g

切片就是从字符串里复制一段指定内容,生成一个新的字符串

切片语法:

变量[start:end:step]

start:开始的下标

end:结束的下标,但是不包含这个值

step:步长,简单理解就是间隔。

m = 'abcdefghijklmnopqrstuvwxyz'
print(m[2:9:2])

如果只设置了start,会"截取"到最后

print(m[2:])

如果只设置了 end,会从头开始“截取”

print(m[:8])

如果步长设置为负数,会倒序复制

print(m[::-1])

如果start和end都是负数,表示从右往左复制。

print(m[-9:-5])
查找相关的方法

使用内置函数 len 可以获取字符串的长度

x = 'abcdefghijklmnabcdefghijklmn'
print(len(x))

查找内容的相关方法:通过 find/index/rfind/rindex 可以获取指定字符的下标

find 和 index 都可以获取指定字符串的位置。但是find如果字符在字符串里不存在,结果是-1;index如果字符在字符串里不存在会报错

print(x.find('l'))  
print(x.index('l'))

rfind最大索引,字符出现的最后位置的下标,不存在结果结果是 -1

rfindex最大索引,不存在会报错

print(x.rfind('l'))
print(x.rfindex('l'))
字符串查找判断和替换

startswith,endswith,isalpha,isdigit,isalnum,isspace;以is开头的是判断,结果是一个布尔类型。

startswith:判断字符串是什么字母开头

endswith:判断字符串是什么结尾

isalpha:判断是否是字母

print('hello'.startswith('he'))
print('hello'.endswith('o'))
print('hello'.isalpha())

isdigit:判断是否是数字

isalnum:判断是否是数字和字母组成单独数字字母都是True

print('ab12hello'.isalnum())  
print('hello'.isalnum())
print('1234'.isalnum()) 
替换

replace方法:用来替换字符串

注意:字符串是不可变数据类型,不可修改,此处的替换是原来的字符串不会变,而是生成一个新的字符串来保存替换后的结果

word = 'hello'
word.replace('l','x')  #replace 将字符串里的 L 替换成 x
m = word.replace('l','x')
print(word) # hello
print(m) 
字符串分隔方法

内容分隔主要涉及到 split,rsplit,splitlines,partition,和 rpartition 四个方法

split方法:可以将一个字符串切割成一个列表

x = 'zhangsan-lisi-wangwu-jerry-henry-merry-jack'
y = x.split('-')

rsplit方法:切割后的结果和split结果一样。如果设置最大分隔次数,两者分隔方式不同;split从左边分,前几个分隔,之后的不在分隔;rsplit从右边开始分,右边分几个个,之前的不在分隔。

print(x.split('-',2))  # 2 表示最大分隔次数,从左边分,前两个分隔,之后的不在分隔
print(x.rsplit('-',2)) #从右边开始分,右边分两个,之前的不在分隔

splitlines 表示换行分隔

按照行分隔,返回一个包含各行作为元素的列表

partition 指定一个字符串作为分隔符,分为三部分

前面 分隔符 后面

修改字符串大小写

capitalize:让第一个单词的首字母大写

print('hello word.good morning\nyes'.capitalize())

upper:全大写

print('hello'upper())

lower:全小写

print('HELLO'lower())

title:每个单词首字母大写

print('good morning'title())
位置设置

ljust(width,fillchar) 居左

rjust 居右 在左侧补空格

center 居中 两侧加空格

width 长度 fillchar 填充字符,默认是空格;可以自己设置
让字符串以指定长度显示,如果长度不够,默认在右边使用空格补齐

print('Monday'.ljust(10))
print('Monday'.ljust(10'+'))

lstrip 去掉左边的空格

rstrip 去掉右边的空格

strip 去掉左右两边的空格

print('    apple    '.lstrip())
print('    apple    '.rstrip())
print('    apple    '.strip())

以某种固定格式显示的字符串,split可以将它切割成为一个列表

join可以将列表转换成为字符串

x = 'zhangsan+lisi+wangwu+jack+tony+henry+chris'
names = x.split('+')
print(names)
字符串的运算符

字符串和字符串之间可以使用加法运算,作用是拼接两个字符串

字符串和数字之间可以使用乘法运算,目的是将指定的字符串重复多次

字符串和数字之间做 == 运算结果是Flase,做 != 运算,结果是True

字符串之间做比较运算,会逐个比较字符串的编码值

不支持其他的运算符

字符串的编码

使用内置函数 chr 和 ord 能够查看数字和字符的对应关系

ord 可以获取字符对应的编码;chr 可以根据编码获取对应的字符

encode 方法,可以将字符串转换成为指定编码结果

decode可以将一个编码集转换成为对应的字符

print(ord('a'))  
print(chr(65))   
print('你'.encode('gbk')) 
print('你'.encode('utf8'))
x = b'\xe4]xbd\xa0'
print(x.decode('utf8'))
成员运算符

innot in可以判断一个内容是否存在可迭代对象里

word = 'hello'
if x in word:
    print('存在')
else:
    print('不存在')
格式化输出字符

使用 % 占位符来表示格式化一个字符串

%s ==>表示的是字符串的占位符
%d ==>表示的整数的占位符
%nd ==>打印时,显示n位,如果不够,在前面使用空格补齐,%0nd 前面补0;%-nd后面补空格
%f ==>表示浮点数的占位符
%.nf ==>保留小数点后n位
%x ==>将数字使用十六进制输出,大写 X 输出大写FF
%% ==>输出一个百分号%

name = 'zhangsan'
age = 18
print('大家好,我的名字是',name,'我今年',age,'岁了',sep='')
print('大家好,我的名字是%s,我今年%d岁了'%(name,age))
字符串 format 的使用

{}也可以占位

{}什么都不会写,会读取后面的内容,一一对应

{数字} 根据数字的顺序来进行填入。数字从 0 开始

{变量名}

混合使用 {数字} {变量},但是{}什么都不写 {数字} 是不能混合使用

x = '大家好,我是{},我今年{}岁了'.format('张三',18)
print(x)
#{数字} 根据数字的顺序来进行填入。数字从 0 开始
y = '大家好,我是{1},我今年{0}岁了'.format(20,'jerry')
print(y)
#{变量名}
z = '大家好,我是{name},我今年{age}岁了,我来自{addr}'.format(age=18,name='jack',addr='襄阳')
print(z)
#混合使用  {数字}	{变量}
a = '大家好,我是{name},我今年{1}岁了,我来自{0}'.format('泰国',23,name="tony")
print(a)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值