字符串的增删改查

一.增:增加元素

方法一:使用"+"/"*"

语法格式:"字符串1"+字符串"2"*数值...

 注:以下例子以两个元素进行举例,

当使用"+"对两个字符串进行拼接时,注意:此时拼接出的新字符串中间是没有空格的.字符串与字符串直接没有"*"这个方法

a = '李二牛'
b = '王艳兵'
c=a+b
print(c)
李二牛王艳兵

 当使用"+"对字符串和数值进行拼接时,注意:此时会报错

a = '李二牛'
b = 2
c=a+b
print(c)
TypeError: can only concatenate str (not "int") to str

 当使用"*"对字符串和数值拼接时,会将字符串输出n遍(取决于数值n)

a = '李二牛'
b = 2
c=a*b  #a*b与b*a都可以没有顺序之分
print(c)
李二牛李二牛

方法二:使用","

语法格式:"字符串1","字符串2",数值...

当使用","对两个字符串进行拼接时,注意:此时新拼接的字符串中间有空格

a = '李二牛'
b = '王艳兵'
print(a,b)
李二牛 王艳兵

 当使用","对一个字符串一个数值进行拼接时,效果一致,当两个元素都为数值时,也是相同的效果

a = '李二牛'
b = 2
c = 3
print(a,b)
print(b,c)
李二牛 2
2 3

方法三:使用格式化

print(f/F'xxxx{变量名}xxx{变量名}')

使用格式化方法时,需要对添加的变量名使用'{}'并在引号前面加上F/f,对于'{}'内的变量名.可以使用切片,索引,赋值运算,方法

该例子中使用了索引,赋值运算,与字符串的修改方法

money = 8.8
food = '米饭'
print(f'今天吃了{food}花了{money}元')
print(f'今天吃了{food[1]}花了{money + 1}元')
print(f'今天吃了{food.replace("米饭", "肉")}花了{money}元')
今天吃了米饭花了8.8元
今天吃了饭花了9.8元
今天吃了肉花了8.8元

方法四:使用%操作符

语法格式:%d,%s.....

%s:用于字符串

%d:用于整数

%f:用于小数

%x:用于表示十六进制整数

%o:用于八进制整数

%%:用于表示%字符本身

在使用%操作符时,相当于为后面的变量名占位置

在使用的时候,每个%对应的顺序应于后面的变量名的顺序相对应,不能打乱顺序因为%d,%s...不能自动进行识别变量的数据类型

name="爱丽丝"
age=20
height=170
weight=23.445
print("人物信息:姓名:%s,年龄:%d,身高:%d,体重:%.2f"%(name,age,height,weight))

方法五:format()

1.当使用变量名时

语法格式:"xxxx{}xxxxx{}".format(变量1,变量2)

当使用变量名时既表示拼接的元素使用变量名进行代替,其中变量只能多于占位符,不能少于占位符.

该例子是三个占位符,三个变量名,正常输出

name1='李二牛'
name2='王艳兵'
position='铁拳团'
print('{}和{}是{}的战友'.format(name1,name2,position))
李二牛和王艳兵是铁拳团的战友

两个占位符三个变量名,正常输出

四个占位符三个变量名,输出报错IndexError

name1='李二牛'
name2='王艳兵'
position='铁拳团'
print('{}和{}是战友'.format(name1,name2,position))
print("{}和{}是{}战友{}".format(name1,name2,position))
李二牛和王艳兵是战友
IndexError: Replacement index 3 out of range for positional args tuple

 2.当不使用变量名时

语法格式:"xxxx{索引值}xxxx{索引值}".format("xxx","xxxx")

 其占位符与所拼接元素的个数要求与上一方法一致,不同的是当拼接元素大于占位符数量时,可以使用索引值进行位置的选取

print('{}和{}是战友'.format("李二牛","何晨光","王艳兵"))
print('{2}和{0}是战友'.format("李二牛","何晨光","王艳兵"))
李二牛和何晨光是战友
王艳兵和李二牛是战友

方法六:join()

语法格式:" ".join(列表)

传递给 join() 方法的序列中的元素必须是字符串(或可转换为字符串的类型,如数字)

join() 方法是在分隔符字符串上调用的,而不是在要连接的序列上。

words = ['Hello', 'world', 'Python']
sentence = ' '.join(words)   
print(sentence)
Hello world Python

二.删:删除元素

方法一:删除特定位置的字符

语法格式:字符串[:n]+字符串[n+2:]

s = 'hello world'    
s_new = s[:6] + s[7:]  # 删除索引为6的字符('w')
print(s_new)  
hello orld

方法二:删除两端字符

语法格式:字符串.strip()

1.删除空白格

当strip()内没有任何参数时,既删除空白格

s = '  hello world  '
# 删除两端空格
s_stripped = s.strip()
print(s_stripped)
hello world

2.删除指定字符

当strip()内有参数时,既删除左右两端所有匹配的字符

s = '!!!hello world!!'
s_stripped = s.strip("!")
print(s_stripped)
hello world

3.删除左/右指定字符

使用(左)lstrip()或(右)rstrip(),删除所有匹配的字符

s = '!!!hello world!!'
s_stripped_l = s.lstrip("!")
s_stripped_r = s.rstrip("!")
print(s_stripped_l)
print(s_stripped_r)
hello world!!
!!!hello world

方法三: 删除特定字符

语法格式:字符串.replace('旧字符','新字符','修改次数')

在该例子中使用replace('e',' ',3)将原字符串中前三个的"e"修改为" "(空格)

s = 'hello world, hello everyone'
# 删除前三个"e"
s_no_e = s.replace('e', ' ',3)
print(s_no_e)
h llo world, h llo  veryone

三.改:修改元素

方法一:replace()

语法格式:字符串.replace('旧字符','新字符','修改次数')

 使用replace()方法在修改/删除字符时,是重新生成一个新的字符进行修改,而不是在原字符串上修改.

在该例子中,将"name"字符串中的"李二牛"改为""(引号内没有任何东西,既表示删除),但并不改变字符串"name"的值,而是通过形成新的字符串'name_'来实现删除/修改

name=',李二牛,王艳兵,'
print(name.replace('李二牛',''))
print(name)
name_=name.replace('李二牛','二牛')
print(name_)
,,王艳兵,
,李二牛,王艳兵,
,二牛,王艳兵,

方法二: upper()

语法格式:字符串.upper()

 将字符串中的字母全部变为大写

s = 'hello world, hello everyone'
s_upper=s.upper()
print(s_upper)
HELLO WORLD, HELLO EVERYONE

方法三:lower()

语法格式:字符串.lower()

 将字符串中的字母全部变为小写

s = 'HELLO WORLD, HELLO EVERYONE'
s_lower=s.lower()
print(s_lower)
hello world, hello everyone

 方法四:translate()和str.maketrans()

语法格式:

trans=str.maketrans('','')

s.translate()

str.maketrans()用于创建一个映射表,这个映射表可以传递给translate()方法。它接受两个可选的字符串参数(fromto)以及一个可选的字典参数,但通常只使用前两个参数。

  • from:字符串,表示需要被替换的字符集合。

  • to:字符串,表示from中每个字符对应的替换字符。它的长度必须与from相同。

如果fromto的长度不同,或者to被省略,则会引发异常

在该例子中,将"ABCefg"对应改变为"abCEFg",所以字符串"ABC,efg"经过改变会变为"abC,EFg".

s = "ABC,efg"
trans = str.maketrans("ABCefg","abCEFg")
s = s.translate(trans)
print(s)
abC,EFg

 第三个参数的用法:既删除原字符串中的指定字符

s = "QWER,tyui"
trans = str.maketrans("QWERtyui","qwerTYUI","iu")
s = s.translate(trans)
print(s)
qwer,TY

方法五:title()

语法格式:字符串.title()

 将字符串首字母大写

s = "QWER,tyui"
print(s.title())
Qwer,Tyui

方法六:split()

语法格式:字符串.split("分割依据","分割次数")

 将字符串进行分割

1.当不传入参数时:

当不传入参数时,默认是根据空格进行分割,分割后返回一个列表

s = "Hello world! Welcome to Python."
words = s.split()
print(words)
['Hello', 'world!', 'Welcome', 'to', 'Python.']

2.当传入第一个参数时:

第一个参数表示根据指定参数分割

s = "apple,banana,cherry"
fruits = s.split(",")
print(fruits)
['apple', 'banana', 'cherry']

3.当传入两个参数时:

第二个参数表示分割次数

s = "one:two:three:four:five"
parts = s.split(":", 2)  # 最多分割2次
print(parts) 
['one', 'two', 'three:four:five']

 4.特殊

当分割依据位于两端时

会生成一个空元素

s = "wasdfw"
parts = s.split("w")
print(parts)
['', 'asdf', '']

四.查:查看元素

方法一:find()

语法格式:字符串.find('内容',起点,终点)

 返回'内容'在字符串中的索引,并可以使用起点和终点获取指定范围内的'内容'索引,若字符串中没有该内容则返回-1

name='tom,jack,toto'
print(name.find('s'))
print(name.find('t',2,19))
-1
9

方法二:count()

语法格式:字符串.count("内容",起点,终点)

 用于求和返回字符串中该内容出现了多少次,并可以指定区间

name='tom,jack,toto'
print(name.count('t'))
print(name.count('t',2,10))
3
1

方法三:isdigit()/isalpha()

语法格式:字符串.isdigit()/isalpha

isdigit()用于判断字符串是否为纯数字,isalpha()用于判断字符串是否为纯字母,返回的形式都是布尔类型(True/False)

name='asdfg'
number="1234"
print(number.isdigit())
print(name.isdigit() )
print(name.isalpha()) 
True
False
True

方法四:endswith()

语法格式:字符串.endswith("数据")

endswith("数据")方法用于判断字符串是否是以该数据结尾

name='123asdfg'
print(name.endswith('asd'))
print(name.endswith("dfg")) 
False
True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值