1-序列类型-字符串str-序列操作

str 字符串

索引取值(提取单个值)

s = "hello world"
print(s[1])         # e

print(s[6])         # w

# 索引也支持负数下标
print(s[-3])        # r

# 使用负数下标提取字符 o
print(s[-4])   # o
print(s[-7])   # o

切片操作 左闭右开

s = "hello world"
print(s[2:5])   	# llo
print((s[-9:-6]))   # llo
print(s[2:-6])      # llo
print(s[-9:-5])     # llo

# 提取hello
print(s[0:5])  # hello

# 如果提取的内容,包含字符的最开始位置,则左边的 0 可以简写
print(s[:5])   # hello

# 提取world
print(s[6:])   # world

# 从s中提取全部字符
print(s[:])    # hello world

使用 下标索引 或 切片 操作过程中,针对不存在的下标,结果是不一样的
索引取值,当 索引 不存在时,python会报错

s = "abcdef"
print(s[9])     # IndexError: string index out of range 索引错误:字符串的索引操作超出了范围

切片 取值,当索引不存在时,不会报错,而是返回空序列
字符串的空序列,就是空字符串 ""

# 从索引9的位置往后提取切片
s = "abcdef"
ret = s[9:]
print(ret,type(ret))    # <class 'str'>

切片操作过程中,
除了声明切片的开始位置和结束位置以外,
还可以通过第三个数值来声明 切片的方向 和 切片操作的步进值,
所谓步进值,就是python在操作过程中跳跃的步骤,
切片操作过程中,默认的步进值为1

s = "123456789"
# 提取s中的奇数数字
print(s[::2])    # 13579,这里表示提取一个索引对应的字符以后,下标+2

# 提取s中的偶数
print(s[1::2])   # 2468

print(s[4::2])   # 579

print(s[:-2:3])  # 147

# 翻转字符串,在步进值中,正数表示从左往右,负数表示从右往左
print(s[::-1])   # 987654321

可以用 in 关键字,判断 指定字符 或 指定字符串 是否在 目标字符串 中出现
in 执行的结果,只会是布尔值,True/False

message = input("请输入你的留言:")
print("hello" in message)


email = "www@qq.com"
print("@" in email)   # True

可以使用 + 号拼接两边的字符串

provice = "河北省"
city = "石家庄"
area = "裕华区"
addr = provice + city + area
print(addr)     # 河北省石家庄裕华区

# 但是字符串不能和数字相加
# 以下是错误写法:
print("1" + 1)  # TypeError: can only concatenate str (not "int") to str

工作中常见的情况:

weight1 = input("请输入货物重量:")   #用户录入的数据往往都是字符串,即使用户填写的是数字,input提取到的也是字符串
weight2 = 3.5
total_weight = float(weight1) + weight2
print(total_weight)

乘法叠加字符串,一般也叫填充

s = "+"
print(s*10)     # ++++++++++

解包,也叫解构,

表示把一个序列的数据,按成员数量拆分成对应数量的变量进行保存

s = "hu"
a1, a2 = s
print(a1)   # h
print(a2)   # u

# 如果成员的数量与等号左边的变量数量不等,则报错
s = "www"
a1, a2, a3, a4 = s
print(a1, a2, a3)  # ValueError: not enough values to unpack (expected 4, got 3)
# 值类型错误:没有足够的成员来进行解包(等号左边期望是4个,结果等号右边只提供了3个)

s = "www"
a1, a2 = s
print((a1, a2))    # ValueError: too many values to unpack (expected 2)
# 值类型错误:太多的成员需要解包了(等号左边希望是2个)

posted on 2022-03-18 13:37  likeyog  阅读(39)  评论(0)    收藏  举报

导航