Python中的字符串(12)

这篇博客详细介绍了Python中字符串的各种操作,包括索引、切片、拼接、赋值语句、format函数、字符串格式化、查找、拆分、替换、修饰、变形、判断方法、dir()和help()函数的使用,以及转义字符和元字符串的概念,同时讲解了字符串的编码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


使用引号(单引号,双引号,三引号)引起来的内容就是字符串。
字符串定义:元素以引号包围 不可修改有序序列

字符串索引

字符串索引从零开始,倒序从-1开始

# 字符串索引
a = '123abc'
print(a[0])
print(a[3])
i = 0
while i < len(a):
    print(a[i])
    i += 1

a = '123abc'
for i in range(len(a)):
    print(a[i])

a = '123abc'
for x in a:
    print(x)
a="123abc"
print(a[-1])
for i in range(-1,-len(a)-1,-1):#步长是-1
    print(a[i])
i=-1
while i>-len(a)-1:
    print(a[i])
    i-=1

字符串切片

# 切片
a = '123abcd'
b = a[0:5]
print(b)  # 123ab
for i in range(0, 5):
    print(a[i], end=" ")  # 1 2 3 a b

print()

for i in range(0, 5, 2):
    print(a[i], end=" ")  # 1 3 b

print()

a = '123abcd'
print(a[3:])  # abcd

a = '123abcd'
print(a[:5])  # 123ab

a = '123abcd'
print(a[:])  # 123abcd

a = '123abcd'
print(a[::3])  # 1ad

a = '123abcd'
print(a[3::3])  # ad

a = '123abcd'
for i in range(3, 7, 3):
    print(a[i], end="")  # ad
print()

a = '123abcd'
print(a[:4:3])  # 1a

a = '123abcd'
print(a[3:0:-1])  # a32 前闭后开

a = '123abcd'
print(a[::-1])  # dcba321 逆序输出

a = '123abcd'
print(a[-1:-5:-2])  # db

a = '123456789'
print(a[-8:5])  # 2345

a = '123456789'
print(a[0:-7])  # 12从左向右,因为步长是1

a = '123456789'
print(a[-1:-5:-1])#9876

字符串拼接

# 字符串拼接
a = "我爱你"
b = "北京"
c = a + b
print(c)  # 我爱你北京

a = "你好" * 3
print(a)  # 你好你好你好

赋值语句形式

# 赋值语句形式
a, b = "12"
print(a)  # 1
print(b)  # 2

a, *b = "123"
print(a)
print(b)  # ['2', '3']

format()

# 字符串格式化-format()
a = "我叫{},年龄{}".format("张三", 29)
print(a)  # 我叫张三,年龄29

# 用的下标索引
a = "我叫{0}姓名{0}年龄{1}".format("李四", 32)
print(a)  # 我叫李四姓名李四年龄32

# 用的关键字
print("我叫{name}姓名{name}年龄{age}".format(name="王五", age=28))

a = "我叫{:#^6}".format("赵六")
print(a)
# ^ 赵六居中    我叫$$赵六$$
# < 赵六居左    我叫赵六$$$$
# > 赵六居右    我叫$$$$赵六
# :号后面的是填充的字符 $,{:#^6},补充的就是    #我叫##赵六##
# 最后面的数字:占的总长度:上题赵六不足六个字符,所以需要补充四个字符

#进制
a="二进制{:b}".format(10)
print(a)
x=bin(10)
print(x,type(x))

a="八进制{:o}".format(10)
print(a)
x=oct(10)
print(x,type(x))

a="十六进制{:x}".format(10)
print(a)
x=hex(10)
print(x,type(x))
"""
运行结果:
二进制1010
0b1010 <class 'str'>
八进制12
0o12 <class 'str'>
十六进制a
0xa <class 'str'>
"""

字符串格式化

name='张三'
age=18
height=1.75
x="我叫%s 身高%f 年龄%d "%(name,height,age)
print(x)
x=0.25
a='成材率%0.2f%%'%(x)
print(a)

字符串的查找

a='abccdefgcd'
b='cd'
x=a.find(b)
print(x)#3 找到的返回第一个指定字符的索引
print(a.find('zz'))#-1 找不到返回-1

a='abccdefgcd'
b='acd'
x=a.rfind(b)
print(x)#找不到返回-1,所以一般开发会用

# a='abccdefgcd'
# b='acd'
# x=a.index(b)
# print(x)#没有的话会报错


# a='abccdefgcd'
# b='acd'
# x=a.rindex(b)
# print(x)#没有的话会报错


a='abccdefgcdecd'
b='cd'
x=a.count(b)
print(x)#3

用函数完成find功能

a=input("请输入一个长串")
b=input("请输入一个短串")

i=0
while i<=len(a)-len(b):
    j=0
    while j<len(b):
        if a[i+j]!=b[j]:
            break
        j+=1
    if j==len(b):
        print(i)
        break
    i+=1
else:
    print(-1)



a=input("请输入一个长串")
b=input("请输入一个短串")

for i in range(0,len(a)-len(b)+1):
    for j in range(0,len(b)):
        if a[i+j]!=b[j]:
            break
        j+=1
    if j==len(b):
        print(i)
        break
    i+=1
else:
    print(-1)

字符串的拆分

# 字符串的拆分
a = '123ab456ab789'
x = a.partition("ab")  # 分割成三部分前一部分,自身和后面部分
print(x)

a = '123a456a789a0'
b = a.split('a')  # 按照指定的内容进行分割
print(b)
a = "2019-7-24"
b = a.split('-')
print(b)

a = '123ab456ab789ab000'
b = a.split('ab', maxsplit=1)  # 切割数
print(b)

a = "abc\n123\n45"
b = a.splitlines()
print(b)

a = "abc\n123\n45"
b = a.split('\n')
print(b)

a = "abc\n123\n45"
i = 0
while i < len(a):
    if a[i] == '\n':
        print()
    else:
        print(a[i], end="")
    i += 1

字符串的替换

makestrans()用法:
用于创建字符映射表的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串,表示转换的目标。
两个字符串需要长度相同,一 一对应。

# 字符串的替换
a = "123abc56abc"
b = a.replace('abc', 'xy')
print(b)  # 123xy56xy
print(a)  # 123abc56abc a没变

s = "1234567890111"
a = '1234567'
b = 'abcdefg'
table = str.maketrans(a, b)  # 创建映射表,a\b的长度必须一样,组合成映射表
b = s.translate(table)  # 通过映射表,进行替换生成新的串
print(b)

print(b)  # 123xy56xy
print(a)  # 123abc56abc a没变

字符串的修饰

# 字符串的修饰
a = '123'
b = a.center(7, '*')  # 居中,默认是空格,现在补全用*
print(b)

a = '123'
b = a.ljust(10, '$')  # ‘123’居左,默认是空格,现在补全用$
print(b)

a = '123'
b = a.rjust(10, '$')  # 居右,默认是空格,现在补全用$
print(b)

a = '123'
b = a.zfill(10)  # 用0填充
print(b)  # 0000000123

a = '     123      '
b = a.lstrip()
print(b, end="#")

print()

a = '     123      '
b = a.rstrip()
print(b, end="#")

print()

a = '     123      '
b = a.strip()
print(b, end="#")

print()

a = "###123####"
b = a.lstrip("#")
print(b)
c = b.rstrip("#")
print(c)

d = a.strip("#")
print(d)

字符串变形

# 字符串变形
a = "abcABC"
b = a.upper()
print(b)  # ABCABC

a = "abcABC"
b = a.lower()
print(b)  # abcabc

a = "abc DEF"
b = a.swapcase()
print(b)  # ABC def

a = "what is your name"
print(a.title())  # What Is Your Name 单词首字母大写

a = "what is your name"
print(a.capitalize())  # What is your name 字符串首字母大写

a = "123\t456\txx"
print(a.expandtabs())  # 将

字符串判断

# 字符串判断
a = '123d'
b = a.isdigit()  # 是否全是数字
print(b)  # False

a = "azAs"
print(a.isalpha())  # True 是否是字母

a = "1243aZ"
b = a.isalnum()  # 是否是字母或数字组成
print(b)  # True

a = "abcA"
print(a.islower())  # False 是否全是小写

a = "abcA"
print(a.isupper())  # False 是否全是大写

a = "What is Your Name"
print(a.istitle())  # False,因为is小写了  是否满足title格式

a = "       d "
print(a.isspace())  # False 是否完全由空格组成

a = "123abc"
print(a.startswith("abc"))  # False 判断是以abc开始的吗,答案:不是

a = "123abc"
print(a.endswith("abc"))  # True 判断是以abc结束的吗 答案:是

dir()和help()

# dir() help()
a = 'abc'
print(dir(a))  # 列出字符串对象中所有的方法的名称

a = 'abc'
print(help(a.replace))  # 查看函数内容

转义字符

#转义字符
a='tom\'s cat'#使用转义字符
print(a)
a="tom\'s cat"#使用双引号
print(a)

a="E:\\test\\next.txt"
print(a)

a=19
b=20
c=22
d=33
if a>33 and b>44 and c>55 and c<100 \
    and a<300:
    print("判断成功")#续行的功能

print('\c')
print('\\')
print('\n')
print('\t')
print('\'')
print('\"')

元字符串

在字符串前添加字母r或者R。

#元字符串
a=r"E:\test\next.txt"
print(a)#原样输出  E:\test\next.txt

字符串编码

a='1a我'
b=a.encode()#编码(encode)  b'1a\xe6\x88\x91'
print(b)
c=b.decode()#解码(decode)   1a我
print(c)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值