一、字符串基础功能:

1.什么是字符串:

简单讲用引号包裹的就是字符串,可以是单引号或双引号。

2.字符串的基础操作:

创建字符串:

# 创建空字符串
s = ''
# 创建非空字符串
s = 'hello Lily'

字符串索引:

s = 'hello Lily'
print(s[0]) # h
print(s[1]) # e
print(s[-1]) # y

字符串切片:

s = '你是我的 甜心 小宝贝儿'
print(s[6:]) # 心 小宝贝儿
print(s[4:7])#  甜心
print(s[::-1])  # 儿贝宝小 心甜 的我是你

字符串的拼接,重复,成员判断:

# 5.拼接
print("昨夜星光闪闪" + "我爱你的心满满") #昨夜的星闪闪爱你的心满满# 6.重复
print("下蛋公鸡,公鸡中的战斗机,欧耶!" * 3) # 下蛋公鸡,公鸡中的战斗机,欧耶!下蛋公鸡,公鸡中的战斗机,欧耶!下蛋公鸡,公鸡中的战斗机,欧耶!# 7.成员
print("a good" in "today is a good day!")  # True

字符串遍历:

s = "hello"for c in s:print(c)  # 每个字符for i in range(len(s)):print(i, s[i])  # 下标for i,c in enumerate(s):print(i, c)  # 下标,字符

字符串的不可变性:

s = "hello"
# s[0] = "a"  # 报错
s = s + " world"
print(s)  # 'hello world'

总结:字符串(str)与列表(list)大部分基础操作相同。

二、字符串常用方法:

统计子串个数:

s = "hello"
print(s.count('ll')) # 1
print(s.count('lll')) # 0

字符串的大小写转换:

print("hello".upper())  # HELL 变成大写
print("HELLo1".lower())  # hello1 变成小写
print("i loVE you".title())  # I Love You 每个单词首字母大写,其他变成小写
print("i loVE you".capitalize())  # I love you 整个字符串首字母大写,其他变成小写
print("i loVE you".swapcase())  # I LOve YOU 大小写切换

字符串的判断方法:

# 1.判断是否数字
print('1'.isdigit())  # True
# 2.判断是否字母
print('abc'.isalpha())  # True
# 3.判断是否字母或数字
print('abc123'.isalnum())  # True
# 4.判断字母是否小写
print("abc123,".islower())  # True
# 5.判断是否大写
print("ABC123,".isupper())  # True
# 6.判断是否是title格式
print("Hello".istitle())  # True
# 7.判断是否只有空格
print('   '.isspace())  # True

字符串的查找方法:

# find() : 从左往右查找子字符串第一次出现的下标, 如果不存在则返回-1
# rfind() : 从右往左查找子字符串第一次出现的下标, 如果不存在则返回-1
s = 'Hong Kong driver diagnosed'
print(s.find('ong'))  # 1
print(s.find('ong2'))  # -1
print(s.rfind('ong'))  # 6
print(s.rfind('ong2'))  # -1# 下面的不常用
# print(s.index('ong'))  # 1
# print(s.index('ong2'))  # 报错
# print(s.rindex('ong'))  # 6
# print(s.rindex('ong2'))  # 报错

字符串的合并与拆分:

拆分/分割


# split(): 按照指定的字符串进行拆分,返回一个拆分之后的列表
s = "I love   you"
list1 = s.split()  # ['I', 'love', 'you']
list1 = s.split(" ")  # ['I', 'love', '', '', 'you']
list1 = s.split("love")  # ['I ', '   you']
list1 = s.split('hello')  # ['I love   you']
list1 = s.split('you')  # ['I love   ', '']
list1 = s.split('o', 1)  # ['I l', 've   you'], 按照前1个o来拆分
print(list1)# splitlines() : 按行拆分
s = '''论语
吾日三省吾身
为人谋而不忠乎
与朋友交而不信乎
传不习乎
'''
print(s.splitlines())  # ['论语', '吾日三省吾身', '为人谋而不忠乎', '与朋友交而不信乎', '传不习乎']
print(s.splitlines(True))  # ['论语\n', '吾日三省吾身\n', '为人谋而不忠乎\n', '与朋友交而不信乎\n', '传不习乎\n']
print(s.split('\n'))  # ['论语', '吾日三省吾身', '为人谋而不忠乎', '与朋友交而不信乎', '传不习乎', '']

连接/合并

#   join() : 将列表中的所有字符串用指定的连接字符串合并
l = ['论语', '吾日三省吾身', '为人谋而不忠乎', '与朋友交而不信乎', '传不习乎']
print( '+'.join(l) )
# 论语+吾日三省吾身+为人谋而不忠乎+与朋友交而不信乎+传不习乎print( '\n'.join(l) )
#论语
#吾日三省吾身
#为人谋而不忠乎
#与朋友交而不信乎
#传不习乎print( '===='.join(l) )
# 论语====吾日三省吾身====为人谋而不忠乎====与朋友交而不信乎====传不习乎

字符串替换:

s = 'mask have tesla tesla tesla'
s = s.replace('mask', '王传福')
print( s.replace('tesla', 'BYD') )  # 王传福 have BYD BYD BYD
print( s.replace('tesla', 'BYD', 2) )  # 王传福 have BYD BYD tesla
print(s)  # 王传福 have tesla tesla tesla

编码和解码:

# 编码: 字符串=>二进制
s = "Python 牛!"
b = s.encode()  # 默认UTF-8编码, b'Python \xe7\x89\x9b!'
print(b)# 解码: 二进制=>字符串
s2 = b.decode()
print(s2)  # 'Python 牛!'

字符串首尾匹配:

s = 'hello kitty'
print(s.startswith('hell'))  # True
print(s.endswith('tty'))  # True

ASCII码转换:


print(ord('a'))  # 97
print(chr(100))  # d

运算字符串中数据:

# eval():
print(eval("1+2"))  # 3
l = eval("[1,2,3]")
print(l, type(l))  # list

三、实战练习:用Python实现歌词解析:

musicLrcStr = """[00:03.50]传奇
[00:19.10]作词:刘兵 作曲:李健
[00:20.60]演唱:王菲
[00:26.60]
[04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
[04:49.00]
[02:47.44][00:43.69]再也没能忘掉你容颜
[02:54.83][00:51.24]梦想着偶然能有一天再相见
[03:02.32][00:58.75]从此我开始孤单思念
[03:08.15][01:04.30]
[03:09.35][01:05.50]想你时你在天边
[03:16.90][01:13.13]想你时你在眼前
[03:24.42][01:20.92]想你时你在脑海
[03:31.85][01:28.44]想你时你在心田
[03:38.67][01:35.05]
[04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
[04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
[04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
[04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
[04:39.55][04:09.00][02:07.85]
"""# 先将所有的时间和歌词放在列表中# 按行拆分
lrc_list = musicLrcStr.splitlines()# 列表存放所有时间和歌词
music_list = []# 遍历每一行歌词
for lrc in lrc_list:# print(lrc)  # 其中的每一行歌词内容# 按']'拆分line_list = lrc.split(']')# print(line_list)# 歌词内容lrc_content = line_list.pop()# print(line_list)# 遍历每一行的所有歌词时间for lrc_time in line_list:lrc_time = lrc_time[1:]  # 将'['去掉# 将提取出来的时间与歌词存入字典当中music_dict = {'time': lrc_time, 'content': lrc_content}# 将存放单句时间歌词的字典存入歌词列表中music_list.append(music_dict)# 列表中字典按'time'升序排列
music_list.sort(key=lambda a:a['time'])import time# 用于存放前一句歌词的时间
sec = 0
for d in music_list:# 取出当前时间t = d['time'] # 将时间转换成秒i = t.find(':')t2 = float(t[:i])*60 + float(t[i+1:])  # 秒# 调用time.seelp()方法暂停歌词显示时间time.sleep(t2 - sec)  # 暂停# 将本句歌词时间传入sec之中sec = t2# 打印当前歌词print(f'{d["time"]} : {d["content"]}')

四、习题:

1.输入一个字符串,压缩字符串如下aabbbccccbbd变成a2b3c4b
2,将字符中单词用空格隔开
3.去掉字符串123@zh@qq.com中的@;
4.已知字符串 s = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下
a.请将s字符串的大写改为小写,小写改为大写
b.请将s字符串的数字取出,并输出成一个新的字符串
c.请统计s字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母)

上期习题答案:

1.声明一个字典保存一个学生的信息,学生信息中包括:
姓名、年龄、成绩(单科)、电话、性别(男、女、不明)

studt1 = {'name': '张山', 'age': 22, 'sl': 55, 'tel': 13504128857, 'sex': '男'}
studt2 = {'name': '小花', 'age': 12, 'sl': 66, 'tel': 13504128832, 'sex': '女'}
studt3 = {'name': '流浪', 'age': 23, 'sl': 78, 'tel': 13504568838, 'sex': '不明'}
studt4 = {'name': '兰妃', 'age': 16, 'sl': 99, 'tel': 13504127632, 'sex': '女'}
studt5 = {'name': '李刚', 'age': 25, 'sl': 33, 'tel': 13504147968, 'sex': '男'}
studt6 = {'name': '沈晓花', 'age': 46, 'sl': 88, 'tel': 13504176828, 'sex': '不明'}

2.声明一个列表,在列表中保存6个学生的信息(6个(题1)中的字典)

s = [studt1, studt2, studt3, studt4, studt5, studt6]

(1) 统计不及格学生的个数

n = 0for i in range(len(s)):if s[i]['sl'] < 60:print(s[i]['name'])n += 1
print('不及格的人数为:', n)
)

(2) 打印不及格学生的名字和对应的成绩

for i in range(len(s)):if s[i]['sl'] < 60:print(s[i]['name'], s[i]['sl'])

(3) 统计未成年学生的个数

n = 0for i in range(len(s)):if s[i]['age'] < 18:print(s[i]['name'], s[i]['age'])n += 1print(n)

(4) 打印手机尾号是8的学生的名字

for i in range(len(s)):if s[i]['tel'] % 10 == 8:print(s[i]['name'], s[i]['tel'])

(5)删除性别不明的所有学生(选做)

i = 0
while i < len(s):if s[i]['sex'] == '不明':s.pop(i)i - = 1i += 1
print(s)

Python 学习笔记 字符串的功能与方法相关推荐

  1. Python学习笔记-- 字符串和数字的连接

    Python学习笔记– 字符串和数字的连接 >>> s = 'abc' >>> print s + 1Traceback (most recent call las ...

  2. Python学习笔记——字符串、列表、元组、字典

    字符串介绍 想一想: 当打来浏览器登录某些网站的时候,需要输入密码,浏览器把密码传送到服务器后,服务器会对密码进行验证,其验证过程是把之前保存的密码与本次传递过去的密码进行对比,如果相等,那么就认为密 ...

  3. Python学习笔记-字符串相关

    字符串有 下标(索引) ,从0开始,到n-1结束 len() 获取字符串长度 s = 'Hello' len(s) 利用索引获取字符串中某一位 正数索引 从0开始,从左向右数 负数索引 从-1开始,从 ...

  4. Python学习笔记-字符串

    目录 一.字符串类型 二.字符串的常用操作 1.字符串拼接 2.计算字符串的长度 3.截取字符串 4.分割.合并字符串 4.1 分格字符串 4.2 多字符分割字符串 4.3 合并字符串 5.检索字符串 ...

  5. python学习笔记---字符串

    字符串 常用的操作方法 .count() .find() .join() .encode() .decode() .endswith() .startswitch('A') .isdigit() .s ...

  6. Python学习笔记字符串Str

    python中的str到底是什么类型? https://docs.python.org/3/library/stdtypes.html#textseq 方法都有哪些? http://www.cnpyt ...

  7. Python学习笔记:文件读/写方法汇总

    # ############# 文件操作方法# 重点常用方法标红# ############import time, sys # ########### 读文件 ################### ...

  8. python学习笔记——字符串操作

    字符串相关操作 #!/usr/bin/env python3 # encoding: utf-8 # author: huangwj # mail: huangwjwork@gmail.com # b ...

  9. Python学习笔记——脚本常用功能案例(识图定位,点击,文字输入)

    所需图片(测试时自己截图) 01.png 02.png 一.案例代码 import pyautogui import time import aircv as ac from PIL import I ...

最新文章

  1. Linux如何查看进程、杀死进程、查看端口等常用命令
  2. angular 标准目录结构_Angular-cli新建项目目录结构详解
  3. 敏捷结果30天之第十二天:效率角色-你是启动者还是完成者
  4. 《编程之美》1.9:高效率的安排见面会的一个解法
  5. Spring Boot(13)——使用RestTemplate
  6. 20155332 如何获取新技能+c语言学习调查
  7. 关于JAVA自带MD5的方法
  8. 软件流程和管理(四):PMP Stakeholder Management
  9. make 及 make clean 的作用
  10. 深入了解智能手机常见感应器
  11. “菜刷刷”系统装机流程
  12. 《那些年啊,那些事——一个程序员的奋斗史》——113
  13. c语言随机生成整数存放一维数组_从创建数组到矩阵运算,一文带你看懂Numpy
  14. HTML+CSS项目总结(建议学习三周后)
  15. 支付宝扫码支付-PC版(沙箱环境)
  16. Qt安装后要做的第一件事------Qt自动补全代码快捷键和输入法切换快捷键 的冲突解决 (附:fedora下查询 删除软件命令)...
  17. 隐函数求导和相关变化率
  18. mysql-获取当前系统时间
  19. 1471_TC275的内核种类以及ID判断
  20. SSL双向认证的证书详解

热门文章

  1. 韩老师在开源年会VS Code专场,期待你的到来!
  2. Java从入门SE到进阶EE技术书籍推荐最全50+本附阅读技术书方法论
  3. Yunxion智能定位胸牌为一线记者提供安全保障
  4. rides windows
  5. android studio 加载so文件各种错误
  6. 流感季蓄势待发,流感疫苗接种知多少?
  7. 单级倒立摆matlab仿真程序,单级倒立摆控制系统设计及MATLAB中的仿真..doc
  8. 一文彻底搞懂SLAM技术
  9. python控制自己手机短信_Python 串口编程 AT指令控制短信
  10. 【爬虫】爬取B站小黑屋