三、字符串
本章内容运行环境:
Jupyter Notebook
本单元视频链接:https://v.youku.com/v_show/id_XNDYyMjY0ODgyOA==.html
我们在之前的数据类型里面讲过,字符串就是一系列的字符,用引号引起来,可以是英文,也可以是数。引号可以是单引号'字符串'
,双引号"字符串"
,三引号'''字符串'''
关于字符串,我们之前提到了几个常用的函数
str()
:将数字转变为字符串
ord()
:获取字符的整数表示
chr()
:把编码转换为对应的字符
3.1 什么是方法
方法就是执行一些指定的操作,比如,将字符串中的所有英文字母变成大写
一般表示成
操作对象.方法名称()
3.2 大小写转换
.upper()
将字符串中的所有英文字母变成大写
.lower()
将字符串中的所有英文字母变成小写
.swapcase()
将大小写字母转换
.title()
将所有单词首字母大写
text = "HELLO world"
text.upper() # 输出: 'HELLO WORLD'
text.lower() # 输出: 'hello world'
text.swapcase() # 输出: 'hello WORLD'
text.title() # 输出: 'Hello World'
3.3 删空格或指定字符
.strip()
删除字符串开头和结尾,两端的空格
.rstrip()
删除右边的空格
.lstrip()
删除左边的空格
text = " Hello world! "
print(text.strip()) # 输出:'Hello world!'
print(text.rstrip()) # 输出:' Hello world!'
print(text.lstrip()) # 输出:'Hello world! '
.strip("***")
删除指定字符
text = "!!!!!! Hello world !!!!!!!"
print(text.strip("!")) # 输出:' Hello world'
print(text.rstrip("!")) # 输出:'!!!!!! Hello world '
print(text.lstrip("!")) # 输出:' Hello world !!!!!!!'
3.4 字符变成变量
.format()
可以将字符串中的部分字符变成变量
可以直接根据位置对应
singer = "陈奕迅"
song = "《浮夸》"
print("我最喜欢的歌是{}的{}".format(singer,song))
# 输出:我最喜欢的歌是陈奕迅的《浮夸》
也可以关键词对应
print("我最喜欢的球星是{country}的{star}".format(star = "C罗",country = "葡萄牙"))
# 输出:我最喜欢的球星是葡萄牙的C罗
3.5 切割字符串
.split()
切割字符串
text = "I love you."
print(text.split()) # 什么都不填,默认是空格
# 输出:['I', 'love', 'you.']
email = "zhaojingyi0126@163.com"
print(email.split("@")) # 根据@切割
# 输出:['zhaojingyi0126', '163.com']
text = "I love you."
print(text.split()[0]) # 输出:I
print(text.split()[1]) # 输出:love
print(text.split()[2]) # 输出:you.
3.6 替换字符串
.replace()
替换字符串中的某一部分
text = "我爱吃苹果"
new_text = text.replace("苹果","哈密瓜")
print(new_text)
# 输出: '我爱吃哈密瓜'
3.7 查找字符
b.find(a)
返回字符串 a 在字符串 b中第一次出现所在的索引位置
text = "Hello World"
find_l = text.find("l")
print(find_l)
# 输出:2
# 这个是指出现的位置,从0开始数
3.8 倒序
str[::-1]
将列表倒序
text = "Hello World"
text[::-1]
# 输出: 'dlroW olleH'
3.9 字符串所有方法
dir(str)
'capitalize',
'casefold',
'center',
'count',
'encode',
'endswith',
'expandtabs',
'find',
'format',
'format_map',
'index',
'isalnum',
'isalpha',
'isascii',
'isdecimal',
'isdigit',
'isidentifier',
'islower',
'isnumeric',
'isprintable',
'isspace',
'istitle',
'isupper',
'join',
'ljust',
'lower',
'lstrip',
'maketrans',
'partition',
'replace',
'rfind',
'rindex',
'rjust',
'rpartition',
'rsplit',
'rstrip',
'split',
'splitlines',
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill'
3.10 实践:清洗豆瓣数据
我在豆瓣电影 Top 250上面,右击查看源代码,可以看到关于《肖申克的救赎》的详情
text = """
<div class="info">
<div class="hd">
<a href="https://movie.douban.com/subject/1292052/" class="">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港) / 刺激1995(台)</span>
</a>
<span class="playable">[可播放]</span>
</div>
<div class="bd">
<p class="">
导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
1994 / 美国 / 犯罪 剧情
</p>
<div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.7</span>
<span property="v:best" content="10.0"></span>
<span>1966737人评价</span>
</div>
<p class="quote">
<span class="inq">希望让人自由。</span>
</p>
"""
用今天学习的字符串的方法,把数据清洗出来,汇总成一句话:
《肖申克的救赎》,豆瓣评分9.7,1966737人评价。推荐理由:希望让人自由。
思路:
1、先想一下,输出要怎么构成?
title = "肖申克的救赎"
rate = "9.7"
number = "1966737人评价"
quote = "希望让人自由。"
print("《{}》,豆瓣评分{},{}。推荐理由:{}".format(title, rate, number, quote))
2、怎么获取到这些数据?可以有几种方法?
一层一层切割开来,选择合适的关键词切
3、完整代码
text = """--------""" # text的内容在上面
title = text.split('</span>')[0].split('>')[-1]
rate = text.split('v:average\">')[1].split('</span>')[0]
number = text.split('star')[1].split('<span>')[1].split('</span>')[0]
quote = text.split('inq')[1].split('>')[1].split('<')[0]
print("《{}》,豆瓣评分{},{}。推荐理由:{}".format(title, rate, number, quote))
请在作业的最后一行输出:
昵称:第3节课作业
网友评论