Python字符串

1. 概述

由多个字母,数字,特殊字符组成的有限序列

字符串的定义:可以使用一对单引号或者双引号,也可以一对三个单引号或者一对三个双引号定义字符串。

注意:没有单符号的数据类型'a' "a"

代码演示:

# 创建字符串
str = "apple"
str1 = 'orange'
print(type(str),type(str1))

2. 字符串特殊处理

字符串前加 r:r" " 的作用是:去除转义字符.  

即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。以r开头的字符,常用于正则表达式,对应着re模块。

字符串前加f:以 f开头表示在字符串内支持大括号内的python 表达式

print(f'{name} done in {time.time() - t0:.2f} s')

字符串前加b:b" "前缀表示:后面字符串是bytes 类型。网络编程中,服务器和浏览器只认bytes 类型数据。

字符串前加u:u""的作用是:含有中文字符组成的字符串。

后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

3. 切片

下标:也叫索引(index),表示第几个数据在程序中,下标一般从0开始,可以通过下标获取指定位置的数据

代码演示: 

# 字符串获取
s1 = 'ABCDEFG'
print(s1[4])
print(s1[0])
print(s1[-1])

'''
字符串索引机制:
1.0~len(s)-1
2.-len(s)~1
'''

执行结果:

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

切片的语法:

字符串变量[start:end:step]

  1. start:表示开始下标,默认从0开始
  2. end:表示结束下标
  3. step:表示步长

代码演示: 

s = 'ABCDEFG'
# 从左往右(0 ~ n-1)
print(s[1:4])  # BCD
print(s[0:6])  # ABCDEF;0可以省略不写
print(s[:6])  # ABCDEF
print(s[4:7])  # EFG
# 从右往左(-n ~ -1)
print(s[-3:-1])  # EF;
print(s[-3:])  # EFG
print(s)  # 打印所有元素
print(s[:])  # 打印所有元素
print(s[::])  # 打印所有元素
print(id(s))  # 1622530964336
print(id(s[:]))  # 1622530964336
print(id(s[::]))  # 1622530964336
print(s[1:-1])  # BCDEF
print(s[:-1:2])  # ACE
print(s[:-2:4])  # AE
print(s[::4])  # AE
print(s[::-2])  # GECA

4. 查找(find)

  1. find:从左向右查找,只要遇到一个符合要求的则返回位置,如果没有找到任何符合要求的则返回-1
  2. rfind:从右向左查找,只要遇到一个符合要求的则返回位置,如果没有找到任何符合要求的则返回-1

代码演示:

path = 'https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.4503'

i = path.find('_')
print(i)
image_name = path[i + 1:]
print(image_name)

# 查找#
j = path.find('#')
# m = path.index('#')

print(j)

# rfind = right find
# 从右往左查找
i = path.rfind('.')
zhui = path[i:]
print(zhui)

执行结果:

5. 获取长度(len)和次数(count)

代码演示:

str3 = "凡哥,'这次车翻的有点厉害'"
# 获取字符串的长度 len()
print(len(str3))   # 14
# count() 在整个字符串中查找子字符串出现的次数
str1 = "电脑卡了,ss电脑呢?"
print(str1.count("电脑"))  # 2
# 在指定区间内查找出现的次数
print(str1.count("电脑", 5, 30))  # 1

6. 判断

代码演示:

# startswith,endswith,isalpha,isdigit,isalnum,isspace
# 返回值都是布尔类型的:(True,False)

path = 'https://mp.csdn.net'
result = path.startswith('ht')  # 判断是否是xxx开头的
print(result)

result = path.endswith('mp4')  # 判断是否是以xxx结尾的
print(result)

s = 'HELLO'
result = s.isalpha()  # 判断是否全部字母组成的
print(result)

s = '100'
result = s.isdigit()  # 判断是否全部数字组成
print(result)

s = "A1234"
result = s.isalnum()  # 判断只有字母和数字组成
print(result)

s = ' '
result = s.isspace()  # 判断字符串是否空格
print(result)

s = 'HELLO'
result = s.isupper()  # 判断是否全部大写字母
print(result)

s = 'hello'
result = s.islower()  # 判断是否全部小写字母
print(result)

7. 替换(replace) 

语法格式:

replace(old, new, count)   默认全部替换,也可以通过count指定次数

代码演示;

# 替换
str2 = "李白在杜甫家喝酒,杜甫喝大了,李白竟然没事,杜甫直接倒头就睡!"
r2 = str2.replace('杜甫', "孟浩然", 2)
print(r2)

执行结果:

8. 切割(split)

代码演示:

# 切割
str3 = '天道酬勤,勿以善小而不为,勿以恶小而为之'
r3 = str3.split(',', 3)  # 以逗号分割,默认空格分割
print(r3)

9. 转换大小写

代码演示:

# 每个单词首字母大写
e = 'hello world'
result = e.title()
print(result)

# 每个单词大写
result =e.upper()
print(result)

# 每个单词小写
result = e.lower()
print(result)

# 第一个单词首字母大写
result = e.capitalize()
print(result)

10. 空格处理

 代码演示:

# strip 除去左右两侧空格
s = '  admin     '
print(len(s))
result = s.strip()
print(result)
print(len(result))
print('*-' * 30)

# lstrip 除去左两侧空格
result = s.lstrip()
print(result)
print(len(result))
print('*-' * 30)

# rstrip 除去右两侧空格
result = s.rstrip()
print(result)
print(len(result))
print('*-' * 30)

# center 居中
s = 'hello world'
result = s.center(54)
print(result)
print('*-' * 30)

# ljust 左对齐
result = s.ljust(30)
print(result)
print('*-' * 30)

# rjust 右对齐
result = s.rjust(60)
print(result)

11. 格式化 

代码演示:

name = '关羽'
age = 45

result = '中年{}今天{}岁!'.format(name, age)
print(result)

# 使用数字填充,从0开始计数
result = '中年{0}今天{1}岁,刚好曹操今年和{0}同岁!'.format(name, age)
print(result)

# 变量名的形式,formation的参数必须是关键字参数
result = '中年{name}今天{age}岁,刚好曹操今年和{name}同岁!'.format(name='关羽', age=45)
print(result)

print(f'中年{name}今天{age}岁,刚好曹操今年和{name}同岁!')

执行结果:

12. 编码(encode)和解码(decode)

# encode() 编码
# decode() 解码
s2 = "君子以自强不息"
# b'\xe5\x90\x9b\xe5\xad\x90\xe4\xbb\xa5\xe8\x87\xaa\xe5\xbc\xba\xe4\xb8\x8d\xe6\x81\xaf'
print(s2.encode())
# b'\xe5\x90\x9b\xe5\xad\x90\xe4\xbb\xa5\xe8\x87\xaa\xe5\xbc\xba\xe4\xb8\x8d\xe6\x81\xaf'
print(s2.encode("utf-8"))
# b'\xbe\xfd\xd7\xd3\xd2\xd4\xd7\xd4\xc7\xbf\xb2\xbb\xcf\xa2'
print(s2.encode("gbk"))

# # 解码
s3 = b'\xe5\x90\x9b\xe5\xad\x90\xe4\xbb\xa5\xe8\x87\xaa\xe5\xbc\xba\xe4\xb8\x8d\xe6\x81\xaf'
print(s3.decode())  # 君子以自强不息

13.ASCII码转换

chr() 将对应的ASCII码的值转换为对应的字符
ord() 获取对应字符的ASCII的值
print(chr(68)) # D
print(ord("a")) # 97
  • 36
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值