Python的基础语法(八)(持续更新)

1 字符串相关方法

基本套路:字符串.xxx()

  1. 字符串.join(序列)

    将序列中的元素用指定的字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)。

    如果需要join的序列中的元素不是字符串,就想办法把它的元素变成字符串再join。

    list1 = ['a', 'b', 'c']
    result = ''.join(list1)
    print(result)		#abc
    
    result = '+'.join(list1)
    print(result)		#a+b+c
    
    result = 'and'.join(list1)
    print(result)		#a and b and c
    
    nums = [1, 2, 3, 4, 5]
    result = ''.join([str(i) for i in nums])
    print(result)		#12345
    
    result = '*'.join('abc')
    print(result)		#a*b*c
    

    2.split

    1)字符串1.split(字符串2)

    将字符串1中所有的字符串2作为切割点对字符串进行切割,返回包含切割后每一段对应的字符串的列表。

    str1 = 'absfiuefhahkajsku768iu78765hkush7687tiujn7t'
    result = str1.split('iu')
    print(result)		#['absf', 'efhahkajsku768', '78765hkush7687t', 'jn7t']
    

    切了之后,字符串2就没了。

    str1 = 'iuabsfiueiuiufhahkajsku768iu78ush7687tiujn7tiu'
    result = str1.split('iu')
    print(result)		#['', 'absf', 'e', '', 'fhahkajsku768', '78ush7687t', 'jn7t', '']
    

    切割点在开头、结尾、或中间连续出现会切出空字符串。

    2)字符串1.split(字符串2,N)

    将字符串1中前N个字符串2作为切割点。

    str1 = 'iuabsfiueiuiufhahkajsku76887tiujn7tiu'
    result = str1.split('iu', 2)
    print(result)	#['', 'absf', 'eiuiufhahkajsku76887tiujn7tiu']
    

    3.replace

    1)字符串1.replace(字符串2,字符串3)

    将字符串1中所有的字符串2都替换成字符串3。

    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    result = str1.replace('iu', 'ABC')
    print(result)		#ABCabsfABCeABCABCf87tABCjn7tABC
    #替换空字符串,删掉
    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    result = str1.replace('iu', '')
    print(result)		#absfef87tjn7t
    

    2)字符串1.replace(字符串2,字符串3,N)

    将字符串1中前N个字符串2替换成字符串3

    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    result = str1.replace('iu', 'ABC',3)
    print(result)		#ABCabsfABCeABCiuf87tiujn7tiu
    

    4.strip

    1)字符串.strip()

    删除字符串左右两端的空白字符。

    不能删除字符串中间的空白字符。

    str1 = ' \n\t  小  妹\n\t  '
    result = str1.strip()
    print(result)		#小  妹
    

    2)字符串.rstrip()

    删除字符串右端的空白字符。

    3)字符串.lstrip()

    删除字符串左端的空白字符。

    str1 = '小  妹//'
    result = str1.strip('/')
    print(result)	#小  妹
    

    5.find、index查找

    1)字符串1.find(字符串2)

    获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在返回-1

    2)字符串1.index(字符串2)

    获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在报错!

    3)字符串1.find(字符串2,开始下标,结束下标)

    获取字符串1中指定范围内字符串2第一次出现的位置。

    4)字符串1.index(字符串2,开始下标,结束下标)

    获取字符串1中指定范围内字符串2第一次出现的位置。

    str1 = 'how are you? I am fine, thank you! and you?'
    print(str1.find('you'))		#8
    print(str1.index('you'))		#8
    print(str1.find('abc'))		#-1找不到
    print(str1.index('abc'))		#报错:ValueError: substring not found
    print(str1.find('you', 10))  # 30
    print(str1.index('you', 10))		# 30
    print(str1.find('you', 10, 26))  # -1
    print(str1.index('you', 10, 26))	#报错:ValueError: substring not found
    

    5)rfind、reindex

    倒着数,第一个you,同上。

    str1 = 'how are you? I am fine, thank you! and you?'
    print(str1.rfind('you'))		#39
    

    6.其他方法

    1)字符串.casefold()

    把字符串变成一个无关字母大小写比较的字符串版本。比较的时候,字母大小写一样。

    print('abcMN123'.casefold())	#abcmn123
    

    2)center、rjust、ljust、zfill(0填充)

    str1 = 'abc'
    print(str1.center(7, '+'))		#++abc++
    print(str1.rjust(7, '*'))		#****abc
    print(str1.ljust(7, '&'))		#abc&&&&
    print(str1.zfill(7))			#0000abc
    

    3)字符串.count()

    统计字符或者子串的个数。

    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    result = str1.count('iu')
    print(result)	#6
    
    str1='dsfi98京津冀我jnier7ucpjmcf'
    for x in str1:
        if x.isdigit() or x.isupper() or x.islower():
            print(x)
    

    4)字符串1.endswith(字符串2)

    判断字符串1是否以字符串2结尾。

    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    print(str1.endswith('iu'))		#True
    print(str1.endswith('abc'))		#False
    

    5)字符串1.startswith(字符串2)

    判断字符串1是否以字符串2开头。

    str1 = 'iuabsfiueiuiuf87tiujn7tiu'
    print(str1.startswith('iu'))		#True
    print(str1.startswith('abc'))		#False
    

    6)format

    还可以添加下标确定此处所需的是哪一个元素。

    name = '小妹'
    age = 18
    result = str.format('{}今年{}岁', name, age)
    print(result)	#小妹今年18岁
    result = str.format('{0}今年{1}岁,{1}岁的{0}', name, age)
    print(result)		#小妹今年18岁,18岁的小妹
    result = f'{name}今年{age}岁'
    print(result)	#小妹今年18岁
    

    7)isdecimal、isdigit、isnumeric

    判断字符串是否全是数字。

    str1 = 'dsfi98京津冀我jnier7ucpjmcf'
    for x in str1:
        if x.isdigit() or x.isupper() or x.islower():
            print(x, end='')	#dsfi98jnier7ucpjmcf
    

    8)isupper是否全是大写字母

    upper小写字母转成大写字母

    islower是否全是小写字母

    lower大写字母转成小写字母

    print('hdh'.islower())	#True
    print('JSS'.isupper())	#True
    print('a'.upper())	#A
    print('F'.lower())	#f
    

    9)maketrans、translate

    一般成对出现。

    只能以字符为单位替换,不能字符与字符串替换。

    str1 = '13442314'
    #创建一个映射表
    table = str.maketrans('1234567890', '一二三四五六七八九零')
    #根据映射表的对应的关系替换字符串中的相关字符
    result = str1.translate(table)
    print(result)		#一三四四二三一四
    

    字符串

2 如何解决字符串内容变化的问题?

1.字符串拼接

name=input('请输入姓名:')
age=int(input('请输入年龄:'))
message=name+'今年'+str(age)+'岁!'
print(message)

2.格式字符串

语法🌸:

包含一个或者多个格式占位符的字符串%(数据1,数据2,数据3,...)

说明:()中的数据必须和前面字符串中的占位符一一对应。如果只需要一个数据,那么()可以省略。

常用的字符串占位符:

%s 可以给任何类型的数据占位(字符串占位符)

%d 只能给数字数据占位(整数占位符)

%f 只能给数字数据占位(浮点数占位符,默认保留6位小数)

%.Nf 只能给数字数据占位(保留N位小数)

name = input('请输入姓名:')
age = int(input('请输入年龄:'))
message = name + '今年' + str(age) + '岁!'
print(message)
money = 15000
message = '%s今年%d岁!月薪%f元。' % (name, age, money)
print(message)
结果:
请输入姓名:小米
请输入年龄:16
小米今年16岁!
小米今年16岁!月薪15000.000000元。

result = '%s%s%s' % ('abc', 12, [10, 20])
print(result)		#abc12[10, 20]
result = '%d-%d' % (12, 2.34)
print(result)		#12-2
result = '%f-%.2f' % (9.29, 8)
print(result)		#9.290000-8.00

3.f-string

1)f-string的基本用法:如果在字符串的最外面加了f,就可以在字符串中通过{}来给字符串提供内容:{表达式}——表达式的结果就是对应的字符串的内容

name = '小妹'
age = 20
str1 = '姓名:{name},年龄:{age}'
str2 = f'姓名:{name},年龄:{age}'
print(str1)		#姓名:{name},年龄:{age}
print(str2)		#姓名:小妹,年龄:20
str3 = f'a:{age},b:{100},c:{100 * 2},d:{100 > 200},e:{name * 2},f:{name[-1]}'
print(str3)		#a:20,b:100,c:200,d:False,e:小妹小妹,f:妹

2)f-string的参数:{提供数据的表达式:参数}

a.控制小数位数

{提供数据的表达式:.Nf}

money = 65758938374364780
result = f'余额:{money:.2f}元'
print(result)		#余额:65758938374364784.00元

num = 9.29
result = f'个数:{num:.0f}'
print(result)		#个数:9

money = 16500
result = f'年薪:{money * 24:.2f}元'
print(result)		#年薪:396000.00元

b.大金额逗号分隔

{提供数据的表达式:,}

{提供数据的表达式:,.Nf} 既控制小数位数,又使用逗号

money = 1454534646500
result = f'年薪:{money:,.2f}元'
print(result)	#年薪:1,454,534,646,500.00元

c.小数显示成百分比

{提供数据的表达式:.N%}

scale = 0.12
result = f'及格率:{scale:.2%}'
print(result)	#及格率:12.00%

d.控制填充长度(实现center、rjust、ljust、zfill的功能)

{提供数据表达式:字符>长度}、{提供数据表达式:字符<长度}、{提供数据表达式:字符^长度}

如果没有提供字符,会用空格填充。

num = 3
class_name = 'py123'
study_id = f'{class_name}{num:0>3}'
print(study_id)		#py123003
result = f'{num:x>8}'
print(result)	#xxxxxxx3
result = f'{num:x<8}'
print(result)	#3xxxxxxx
result = f'{num:x^8}'
print(result)	#xxx3xxxx
result = f'{num:>8}'
print(result)	#       3

nums = [234, 2, 33, 46, 4454]
for i in nums:
    print(f'编号:{i:>7}')
结果:
编号:    234
编号:      2
编号:     33
编号:     46
编号:   4454
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值