Python Note -- Day 6. 详解字符串、字符串函数

13. 详解字符串

13.1 转义字符

  • \  转义符,续行符
    • 作为转义符时,在\后面出现的字符可能会实现另外一种意义
    • 续行符在行尾使用\,可以换行继续书写内容
  • \n 换行符
  • \r 代表光标位置(从\r出现的位置开始作为光标的起点),之前的内容都没了
    print('nice to meet \r you my dear')
  • \t 水平制表符(table缩进)
  • \b 退格,回删键
  • \ 一个\是转义符,再加一个\就会取消转义,变成普通\输出
    print('nice to meet \\r you my dear')
  • 把转义字符作为普通字符输出,在字符串前面加  r' '              print( r'\n' )

13.2 字符串相关操作

  • 字符串 + 操作 :字符串拼接
  • 字符串 * 操作 :字符串重复输出
  • 字符串 [ ] 切片操作
  1. 字符串的索引操作,只能访问,不能修改
  2. 正数从0,倒着数从-1
 vars = 'abcd,efg'
 print(vars[4])
 print(vars[-2])

 字符串的切片操作
 [开始值:结束值:步进值]
 开始值默认值为0,结束值默认是最后一个下标,步进值默认1

 print(vars)
 print(vars[3])   # 写一个值就是获取指定下标的元素
 print(vars[2:5]) # 从2下标开始取值,到5之前,取到2,取不到5
 print(vars[2:7:2]) # cd,ef --> c,f
 print(vars[::2]) # 从头取到尾,每隔一个取一个
 print(vars[::-1])  # 字符串倒转过来取

练习
利用切片操作,实现一个trim()函数,去除字符串首尾的空格

def trim(s):
    while s and s[-1]==' ':
        s=s[:-1]
    while s and s[0]==' ':
        s=s[1:]
    return s


## updated
def trim(s):
    while s[:1]==' ':
        s=s[1:]
    while s[-1:]==' ':
        s=s[:-1]
    return s

13.3 字符串格式化的方法

format()格式化

# 1.普通方式
a = 'libai went up to the ship'
b = '{} to see a friend'.format(a)
c = '{} to see {}'.format(a,'a friend')
print(b)
print(c)

# 2. 通过索引传参              0    1       2
d = '{2} to see {1}'.format(a,'a friend', 'oh')
print(d)

# 3. 关键字传参
e = '{ee} to see {eee}'.format(ee='libai',eee='a friend')
print(e)

# 4. 容器类型数据传参
f = 'coach:{}, tutor:{}, PD:{}'.format('who','where','what')
print(f)

g = {'a':'John','b':'lily'}
h = '{a} is making with {b}'.format(**g)
print(h)
  • 3.7 中新增的格式化方法

g = {'a':'John','b':'lily'}
m = f'{g["a"]} is making with {g["b"]}'
print(m)
  • 限定小数位数
n = '圆周率:{:.2f}'.format(3.1415926)
print(n)

format 格式化用法

13.4 字符串函数

13.4.1 英文字符与字符检测相关函数

1)、大小写转换

# str.capitalize() 返回原字符串的副本,首个字符大写,其余小写
a = 'iloneu'
r = a.capitalize()
print(r)
# str.title() 返回原字符的副本,把字符串中的每个单词首字母大写
b = 'what a exhausted day'
rr = b.title()
print(rr)
# str.upper() 把字符串中的英文字符全部转为 大写

# str.lower() 把字符串中的英文字符全部转为 小写

# str.swapcase() 把字符串中的英文字符大小写互换
rr = rr.swapcase()
print(rr)

2)、字符检测

  • str.isupper() 检测字符串中的英文字符是否全为 大写
  • str.islower() 检测字符串中的英文字符是否全为 小写
  • str.istitle() 检测字符串中的英文字符是否标题的要求

  • str.isalnum() 检测当前字符串是否由字符(中文、英文、数字)组成,不包含空格!!
b = 'whataexhausted好1day'
rr = b.isalnum()
print(rr)
  • str.isalpha() 检测当前字符串是否由中英文字符组成
  • str.isdigit() 检测当前字符串是否由数字字符组成
  • str.isspace() 检测当前字符串是否由空格字符组成,只包含空格,无其他

  • str.startswith() 检测字符串是否由指定的字符开头的
b = 'what a exhausted号1day'
rr = b.startswith('w')
print(rr)

# 也可以指定开始和结束的位置
rr = b.startswith('t',3)
print(rr)
  • str.endswith() 检测字符串是否由指定的字符结束的
 # 也可以指定开始和结束的位置
rr = b.startswith('t ',3,5)
print(rr)
rr = b.endswith('ay',10,20)
print(rr)

13.4.2 字符串查找相关函数重点

a = 'iloveyoutosimidailoveyoutosimida'
# 检测一个字符串是否存在字符串中
r = 'love' in a
print(r)
  • len() 获取字符串长度
r = len(a)  
print(r)
  • 获取指定字符在字符串中第一次出现的索引位置,未找到则返回-1
  • str.find(sub[,start[,end]) 从左向右 (索引位置都是从左开始0)
r = a.find('love')
print(r)
r = a.find('love',4,21)
print(r)
  • str.rfind(sub[,start[,end]) 从右向左 (索引位置都是从左开始0)
r = a.rfind('love')
print(r)
  • str.index() 和find方法一样,但是若没找到则报错 ValueError: substring not found
  • str.rindex()同理
  • str.count(sub[,start[,end]]) 统计字符在字符串中出现的次数

13.4.3 字符串操作相关函数 - 重点

  • str.split() 按照指定的字符进行分割,把字符串分割成列表
b = 'user_admin_id_123'
re = b.split('_')
print(re)
print(re.pop()) # 输出列表最后一个字符

print(re.pop()) # 输出列表最后一个字符

  • str.split(,) 可以指定分割的次数
b = 'user_admin_id_123'
bb = b.split('_',2)
print(bb)
  • str.rsplit(,)
aa = b.rsplit('_') # 没区别
aaa = b.rsplit('_',2) #从后往前分割
print(aa,aaa)

习题 'uid=123&type=ab&kw=hh' ==> 123 ab hh

cc = 'uid=123&type=ab&kw=hh'
re1 = cc.split('&')
for i in re1:
    newlist = i.split('=')
    print(newlist.pop())
print(re1)
  • str.join() 按照指定字符,把容器类型中的数据链接成一个字符串
arr = ['user', 'admin', 'id', '123']
res = '@'.join(arr)
rea = ''.join(arr)
print(res,rea)
  • str.strip() 可以去除左右两侧的指定字符
vars = '  this is a title '  
res = vars.strip(' ')  
print(res)  
  • str.lstrip() 去除字符串左侧的指定字符
  • str.rstrip() 去除字符串右侧的指定字符
  • str.replace(old,new[,count]) 替换 res = vars.center(19,'&')
    res = vars.ljust(13,'&')
    res = vars.rjust(13,'*')

* eval() 函数 - 用来执行一个字符串表达式,并返回表达式的值

eval(expression[, globals[, locals]])
  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
x = 7
y = eval('3*x')
y = eval('pow(3,4)')
y = eval('2+2')
print(y)

字符串对象的 str.rjust() , 可以将字符串靠右, 并在左边填充空格。
str.ljust() 和 str.center()。 这些方法并不会写任何东西, 它们仅仅返回新的字符串。
str.zfill(), 它会在数字的左边填充 0。

'12'.zfill(5)
'-3.14'.zfill(7)
'3.14159265359'.zfill(5)

将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。

str(): 函数返回一个用户易读的表达形式。
repr(): 产生一个解释器易读的表达形式。

# 输出一个平方与立方的表:
for x in range(1, 11):
    print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
     # 注意前一行 'end' 的使用
    print(repr(x*x*x).rjust(4))

执行 string.ascii_letters 的输出也可以通过哪个实现?
string.ascii_lowercase+string.ascii_upercase
Python3 中 String 模块 ascii_letters 是生成所有字母,从 a-z 和 A-Z。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值