今天和大家分享字符串更深一步的知识,看了之后你一定会爱上的哈哈哈
一、字符串操作
说明:字符串类型中内置了很多方法,方便开发者对字符串进行常见操作。 字符串的常见操作方法有查找、修改和判断三大类。 通过调用内置的函数,可以省去开发者重复造轮子,节省开发时间,提升开发速度。 开发语言的发展总是要语言使用者尽量的将精力集中到业务逻辑的处理上,而不是编写一些重复性的、没啥技术含量的代码。
1.1 查找
- find() :检测某个子串是否包含在这个字符串中,如果在,返回这个子串开始位置的下标索引,否则返回 -1。
- rfind() :和 find() 功能相同,但查找方向为—右侧开始
- 语法格式
字符串序列.find(子串,开始位置下标,结束位置下标)
str1 = 'hello world'
print(str1.find('hello'))
print(str1.find('world'))
print(str1.find('school'))
- index() :检测某个子串是否包含在这个字符串中,如果在,返回这个子串开始位置的下标索引,否则报错。
- rindex() :和 index() 功能相同,但查找方向为—右侧开始
- 语法格式
字符串序列.index(子串,开始位置下标,结束位置下标)
str1 = 'hello world'
print(str1.index('hello'))
print(str1.index('world'))
print(str1.index('123'))
- count() :返回某个子串在字符串中出现的次数。
字符串序列.count(子串,开始位置下标,结束位置下标)
str1 = 'hello world'
print(str1.count('l'))
print(str1.count('o'))
print(str1.count('c'))
1.2 修改
- replace() :替换。
字符串序列.replace(旧子串,新子串,替换次数)
str1 = 'hello world'
print(str1.replace('h','A'))
print(str1.replace('l','c'))
print(str1.replace('o','B',1))
print(str1)
- split() : 按照指定字符分割字符串。
字符串序列.split(分割字符,分割次数)
str1 = 'hello world'
print(str1.split('l'))
print(str1.split('l',2))
print(str1.split('o'))
- join() :用一个字符或子串合并字符串。
字符串序列.join(多字符串组成的序列)
str1 = ('小明','小红','小王','小李')
print('—'.join(str1))
print('...'.join(str1))
print('//'.join(str1))
- capitalize() : 将字符串第一个字符转换成大写。
字符串序列.capitalize()
str1 = 'hello world'
print(str1.capitalize())
- title() : 将字符串每个单词首字母转换成大写。
str1 = 'hello world'
print(str1.title())
- lower():将字符串中大写转小写。
str1 = 'HEllo WOrld'
print(str1.lower())
- upper(): 将字符串中小写转大写。
str1 = 'hello world'
print(str1.upper())
- lstrip():删除字符串左侧空白字符。
str1 = ' hello world'
print(str1.lstrip())
- rstrip():删除字符串右侧空白字符。
str1 = ' hello world '
print(str1.rstrip())
- strip():删除字符串两侧空白字符。
str1 = ' hello world '
print(str1.strip())
- ljust():返回原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
- rjust():返回原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。语法和ljust相同。
- 语法格式
字符串序列.ljust(长度,填充字符)
str1 = 'hello'
print(str1.ljust(10,'.'))
print(str1.ljust(10,'*'))
print(str1.rjust(10,'@'))
- center():返回原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串,语法和ljust相同。
str1 = 'hello'
print(str1.center(10,'.'))
1.3 判断
- startswith():检查字符串是否以指定子串开头,如果是返回 True,否则返回 False,如果设置开始和结束位置下标,则在指定范围内检查。
字符串序列.startswith(子串,开始位置下标,结束位置下标)
str1 = 'hello world'
print(str1.startswith('h'))
print(str1.startswith('h',5,10))
- endswith():检查字符串是否以指定子串结尾,如果是返回 True,否则返回 False,如果设置开始和结束位置下标,则在指定范围内检查。
字符串序列.endswith(子串,开始位置下标,结束位置下标)
str1 = 'hello world'
print(str1.endswith('d'))
print(str1.endswith('d',2,5))
- isalpha(): 如果字符串所有字符都是字母返回 True,否则返回 False。
str1 = 'hello'
print(str1.isalpha())
str2 = 'hello123'
print(str2.isalpha())
- isdigit():如果字符串所有字符都是数字返回 True,否则返回 False。
str1 = '132456'
print(str1.isdigit())
str2 = 'hello123'
print(str2.isdigit())
- isalnum():如果字符串中包含字母或数字返回 True,否则返回 False。
str1 = 'hello123'
print(str1.isalnum())
str2 = '132-'
print(str2.isalnum())
- isspace():如果字符串只包含空白返回 True,否则返回 False。
str1 = ' '
print(str1.isspace())
str2 = 'hello world'
print(str2.isspace())
二、字符串案例分析
2.1 基础练习
- string = “Python is good”, 请将字符串里的Python替换成 python,并输出替换后的结果
string = 'Python is good'
print(string.replace('Python','python'))
python is good
print(string.lower())
python is good
- 有一个字符串 string = “python从入门到放弃.html”,请写程序从这个字符串里获得.html前面的部分
string = "python从入门到放弃.html"
index = string.find('.')
print(string[:index])
python从入门到放弃
for item in string:
print(item,end='')
if item == '弃':
break
python从入门到放弃
- “this is a book”,请将字符串里的book替换成apple
string = "this is a book"
print(string.replace('book','apple'))
this is a apple
- “this is a book”, 请用程序判断该字符串是否以this开头
string = "this is a book"
print(string.startswith('this'))
True
if string[:4] == 'this':
print(True)
else:
print(False)
True
- “this is a book”, 请用程序判断该字符串是否以apple结尾
string = "this is a book"
print(string.endswith('apple'))
False
if string[-1:-6:-1] == 'elppa':
print(True)
else:
print(False)
False
2.2 提升练习
- 用户输入密码时,可能存在许多的误输入,按照如下要求对密码进行检查
- 删除密码首位的空格(因为有可能在开始和结尾的位置不小心键入空格)
- 将所有的字母都转换为小写(用户也有可能不小心将小写写成大写)
- 如果输入的密码都是空格,没有实际输入内容,则提示“请输入有效的密码”
password = input('请输入密码:')
if password.isspace():
print('请输入有效的密码')
else:
print(password.strip().lower())
请输入密码:
请输入有效的密码
请输入密码: A16546
a16546
- 用户输入一个整数金额,将其按照如下格式进行转换
- 如果金额位数小于等于3位,则原样输出,如 566
- 如果金额位数大于3位,则按照如下样式输出,如 566,1、566,123,445、566,123,445,23
"""
思路:
1. 使用 find() 方法判断输入的金额是整数还是小数
2. 如果是小数,分别截取整数部分和小数部分
3. 针对整数部分取余,根据余数截取整数部分,剩下的部分(int_number[num:])正好能被3整除
4. 针对能整除的部分通过循环格式化金额
5. 拼接金额: str + result + 小数部分
"""
Number = input('请输入一个整数金额:')
index = Number.find('.')
if index == -1:
int_number = Number
else:
int_number = Number[:index]
float_number = Number[index:]
"""
判断整数部分的长度
1. 如果能被3整数,则不做处理
2. 若不能,则求取余数,根据余数截取字符
"""
num = len(int_number) % 3
str1 = int_number[:num]
result = ''
i = 1
for item in int_number[num:]:
if i % 3 == 0:
result = result + item + ','
else:
result += item
i += 1
if index == -1:
print((str1 + ',' + result.rstrip(',')).lstrip(','))
else:
print((str1 + ',' + result.rstrip(',') + float_number).lstrip(','))
请输入一个整数金额:1654564565
1,654,564,565
请输入一个整数金额:15615641.1654561
15,615,641.1654561
- 注册账号时,对密码的格式是有一定要求的,比如我们的要求是
- 密码的第一个字符必须是字母,且必须大写
- 密码的长度必须在6-12位之间
- 密码必须包含字母、数字和特殊符号 $ 、_ 之中的一个
- 请利用现有知识解决上面的问题,不要使用正则
while True:
password = input('输入密码:')
"""
遍历字符串,对每一个字符进行判断,判断每一个字符的类型
"""
isAlpha = False
isDigit = False
for item in password:
if item.isdigit():
isDigit = True
if item.isalpha():
isAlpha = True
if password[0].isalpha() and password[0].upper() == password[0] and 6 <= len(password) <= 12 and isAlpha and isDigit and (password.find('$') != -1 or password.find('_') != -1):
print('密码格式正确')
else:
print('密码格式不正确')
输入密码:a16465
密码格式不正确
输入密码:A123465
密码格式不正确
输入密码:A16$
密码格式不正确
输入密码:A1654321$
密码格式正确
输入密码:A165161_
密码格式正确
- 让用户输入一个文件名称,文件名称必须包含扩展名,如 1.jpg、aa.txt、music.mp4等
- 判断用户输入的文件名称是否是一个图片
- 图片的扩展名可以是 .jpg、.png、.gif
Img = input('输入一个文件名称:').lower()
if Img.endswith('.jpg') or Img.endswith('.png') or Img.endswith('.gif'):
print('文件是一个图片')
else:
print('文件不是图片')
输入一个文件名称:1651.html
文件不是图片
输入一个文件名称:16554.jpg.html
文件不是图片
输入一个文件名称:165156.JPG
文件是一个图片
输入一个文件名称:1651.gif
文件是一个图片
- 每月末要统计公司员工的出勤情况,人事娟娟采用如下的方式记录每位员工的出勤
- A 代表缺勤、L 代表迟到、P 代表正常。一个 A 代表缺勤1次,一个 L 代表迟到1次,一个 P 代表正常1次。
- 比如如下的考勤记录 PPPPPPPPPPALPALPPPPPPL 代表 正常出勤 16次,缺勤2次,迟到3次
- 一个月内,缺勤一次以内,并且迟到3次以内,是不扣钱的,可以发全额工资,否则就要扣钱
- 现有员工小张的出勤记录如下 PPAPPPLPPPPPLPPPPPPAPPPP,编程计算小张本月是否扣钱
Str = 'PPAPPPLPPPPPLPPPPPPAPPPP'
A = Str.count('A')
L = Str.count('L')
if A > 1 or L > 3:
print('小张本月扣钱')
else:
print('不扣钱')
小张本月扣钱
感谢您观看本篇文章,感觉博主写的不错的话,小手手点一下赞,博主需要您的鼓励,感谢。
|