# 设置全部行输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
a = 1
b = 2
a
b
1
2
将float型的1.345转化为str型
a = str(1.345)
a
'1.345'
type(a)
str
s = 'cda数据分析71期'
s
'cda数据分析71期'
type(s)
str
练习:创建一个'人生苦短,我用python!'的字符串。
a = 'pyt'
b = 'hon'
a+b
'python'
a
'pyt'
b
'hon'
a = '1'
a*8
'11111111'
b = 'abc'
b*10
'abcabcabcabcabcabcabcabcabcabc'
请大家输出100个'*'
a = '1'
b = '2332145'
a in b #判断a是否在b里面
True
"胡" in "胡萝卜"
True
'12' in '132'
False
'12' not in '132'
True
'32' in '132'
True
字符串也是一个可迭代对象, 也就是说每一个字符串实际上都有一个对应的索引值。
字符串的切片,就是从原字符串中提取一部分出来,可以是连续的,也可以是离散的。
那么字符串依靠的是什么来取得呢?那就是索引
字符串切片的标准语法:
str[开始位置: 终止位置:步长和方向]
s = "人生苦短,我用python"
len(s) # len()函数可以用来查看字符串的长度
13
s
'人生苦短,我用python'
取出字符串'人'
取出字符串','
取出字符串'n'
s
'人生苦短,我用python'
取出字符串'h'
s
'人生苦短,我用python'
取出字符串'人生苦短'
s
'人生苦短,我用python'
取出字符串'苦短,我用py'
s
'人生苦短,我用python'
取出字符串 'python'
s
'人生苦短,我用python'
取出字符串'人苦,'
s
'人生苦短,我用python'
取出字符串'短苦生人'
s
'人生苦短,我用python'
取出字符串'nohtyp用我'
s
'人生苦短,我用python'
...................
**(1)第一题** 给定一个字符串aStr, 请反转字符串 aStr = "abcdefg"
**(2)第二题**
b = "绍兴E网_E网论坛_绍兴房产汽车装修亲子培训生活网"
**(1)count()方法**
a = '我爱北京天安门,天安门上太阳升'
a.count("天安门") # 把天安门当做一个整体进行计数
2
a.count('天安门',0,10) #在[0:10)这个片段上对‘天安门’进行计数
1
a.count('天安门',0,11) ##在[0:11)这个片段上对‘天安门’进行计数
2
练习: 请大家统计这篇《离骚》 里面,有多少个‘兮’?
长太息以掩涕兮,哀民生之多艰。
余虽好修姱以鞿羁兮,謇朝谇而夕替。
既替余以蕙纕兮,又申之以揽茝。
亦余心之所善兮,虽九死其犹未悔。
怨灵修之浩荡兮,终不察夫民心。
众女嫉余之蛾眉兮,谣诼谓余以善淫。
固时俗之工巧兮,偭规矩而改错。
背绳墨以追曲兮,竞周容以为度。
忳郁邑余佗傺兮,吾独穷困乎此时也。
宁溘死以流亡兮,余不忍为此态也。
鸷鸟之不群兮,自前世而固然。
何方圜之能周兮,夫孰异道而相安?
屈心而抑志兮,忍尤而攘诟。
伏清白以死直兮,固前圣之所厚。
悔相道之不察兮,延伫乎吾将反。
回朕车以复路兮,及行迷之未远。
步余马於兰皋兮,驰椒丘且焉止息。
进不入以离尤兮,退将复修吾初服。
制芰荷以为衣兮,集芙蓉以为裳。
不吾知其亦已兮,苟余情其信芳。
高余冠之岌岌兮,长余佩之陆离。
芳与泽其杂糅兮,唯昭质其犹未亏。
忽反顾以游目兮,将往观乎四荒。
佩缤纷其繁饰兮,芳菲菲其弥章。
民生各有所乐兮,余独好修以为常。
虽体解吾犹未变兮,岂余心之可惩。
s = '''
长太息以掩涕兮,哀民生之多艰。
余虽好修姱以鞿羁兮,謇朝谇而夕替。
既替余以蕙纕兮,又申之以揽茝。
亦余心之所善兮,虽九死其犹未悔。
怨灵修之浩荡兮,终不察夫民心。
众女嫉余之蛾眉兮,谣诼谓余以善淫。
固时俗之工巧兮,偭规矩而改错。
背绳墨以追曲兮,竞周容以为度。
忳郁邑余佗傺兮,吾独穷困乎此时也。
宁溘死以流亡兮,余不忍为此态也。
鸷鸟之不群兮,自前世而固然。
何方圜之能周兮,夫孰异道而相安?
屈心而抑志兮,忍尤而攘诟。
伏清白以死直兮,固前圣之所厚。
悔相道之不察兮,延伫乎吾将反。
回朕车以复路兮,及行迷之未远。
步余马於兰皋兮,驰椒丘且焉止息。
进不入以离尤兮,退将复修吾初服。
制芰荷以为衣兮,集芙蓉以为裳。
不吾知其亦已兮,苟余情其信芳。
高余冠之岌岌兮,长余佩之陆离。
芳与泽其杂糅兮,唯昭质其犹未亏。
忽反顾以游目兮,将往观乎四荒。
佩缤纷其繁饰兮,芳菲菲其弥章。
民生各有所乐兮,余独好修以为常。
虽体解吾犹未变兮,岂余心之可惩。
'''
# 有兴趣的大家可以数数有多少个
**(2)find()方法**
a = "这是一个查是找函数"
a.find('是') #默认是第一次出现的索引位置
1
a.rfind('是') #rfind()最后一次出现的索引位置
5
a.find('是', 0, 3) # 相当于在[0:3)这个片段内查找,找得到就返回在原来字符串中的索引,找不到返回-1
1
a.find('是', 0,1) #[0:1)内找不到,返回-1
-1
a.find('是', 3, 7)
5
a.find('我') # 找不到,则返回-1
-1
当查找的是一个片段的时候
a
'这是一个查是找函数'
a.find('一个') #如果存在则返回第一个字符的索引,即‘一’的索引
2
a.find('一个', 3, 6) #找不到返回-1
-1
练习:请大家在下面这些文字中找到这个字 "姬" (ji)
姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姬姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫
s = "姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姬姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫姫"
**(3)index()方法**
a = "这是一个查找函数,哦,是吗?"
a.index('是') # 默认返回第一次出现的位置
1
a.rindex("是") # 返回最后一次出现的索引值
11
a = "这是一个查找函数,哦,是吗?"
a.index('是',2,5) # 找不到直接报错
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-50-4ba59308d944> in <module> 1 a = "这是一个查找函数,哦,是吗?" 2 ----> 3 a.index('是',2,5) # 找不到直接报错 ValueError: substring not found
练习: 请从下面的内容中切片出‘此情可待成追忆,只是当时已惘然。'
《锦瑟》
作者:李商隐
锦瑟无端五十弦,一弦一柱思华年。
庄生晓梦迷蝴蝶,望帝春心托杜鹃。
沧海月明珠有泪,蓝田日暖玉生烟。
此情可待成追忆,只是当时已惘然。
s = '''
《锦瑟》
作者:李商隐
锦瑟无端五十弦,一弦一柱思华年。
庄生晓梦迷蝴蝶,望帝春心托杜鹃。
沧海月明珠有泪,蓝田日暖玉生烟。
此情可待成追忆,只是当时已惘然。
'''
print(s)
《锦瑟》 作者:李商隐 锦瑟无端五十弦,一弦一柱思华年。 庄生晓梦迷蝴蝶,望帝春心托杜鹃。 沧海月明珠有泪,蓝田日暖玉生烟。 此情可待成追忆,只是当时已惘然。
**(1)语法: 字符串.split("分割符",分割次数)**
s = 'hello world'
s
'hello world'
s.split() # 返回的是一个列表,这里默认是空格分割
['hello', 'world']
s = "hello wo\trld"
s.split() #默认以特殊字符分割,空格 \n \t 等
['hello', 'wo', 'rld']
str_01 = "123哈254哈354534哈4646"
str_01.split("哈") # 指定分隔符,默认全部分割
['123', '254', '354534', '4646']
str_02 = "123哈254哈354534哈4646"
str_02.split("哈",2) #可以传入参数去限制分割几次
['123', '254', '354534哈4646']
如果想从右边开始分隔(还是加个“r”):
str_03 = "123哈254哈354534哈4646"
str_03.rsplit("哈",2) #可以传入参数去限制分割几次
['123哈254', '354534', '4646']
练习:取出下列字符串当中的人名
郭靖.jpg
张无忌.jpg
杨过.jpg
如来佛祖.jpg
观世音菩萨.jpg
s = '郭靖.jpg张无忌.jpg杨过.jpg如来佛祖.jpg观世音菩萨.jpg'
**(2)语法: 字符串.splitlines(True或False)** 按照行分隔,返回一个包含各行作为元素的列表。 - 字符串.splitlines()按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表。 - 如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
a="关于你\r我有太多东西关于你\r\n清醒的时候放不下矜持\n不敢说我喜欢你\n只有在某个夜晚多愁善感又萦绕在心头\n或是朋友聚会上的大醉\n才敢借着情绪说\n我喜欢你\n喜欢了好久好久"
b=a.splitlines() #括号里面默认填False,效果一样,不显示换行符
b
['关于你', '我有太多东西关于你', '清醒的时候放不下矜持', '不敢说我喜欢你', '只有在某个夜晚多愁善感又萦绕在心头', '或是朋友聚会上的大醉', '才敢借着情绪说', '我喜欢你', '喜欢了好久好久']
现在,大家都能理解str.splitlines()的作用了,如果在括号里面添加参数True,会将这些分隔符显示出来。
a="关于你\r我有太多东西关于你\r\n清醒的时候放不下矜持\n不敢说我喜欢你\n只有在某个夜晚多愁善感又萦绕在心头\n或是朋友聚会上的大醉\n才敢借着情绪说\n我喜欢你\n喜欢了好久好久"
b=a.splitlines(keepends=True)
b
['关于你\r', '我有太多东西关于你\r\n', '清醒的时候放不下矜持\n', '不敢说我喜欢你\n', '只有在某个夜晚多愁善感又萦绕在心头\n', '或是朋友聚会上的大醉\n', '才敢借着情绪说\n', '我喜欢你\n', '喜欢了好久好久']
练习:利用splitlines()分割下面的字符串
'当枯萎的落叶灾难般的落下,当瓢泼的大雨坠毁般的浸淋。\n在漫长的黑夜破晓之前,在无数次期待破灭之后。\n用无尽的伤痛串联成线,用无边的热情抽丝剥茧。\n以蝉蛹的坚韧默默倒数,以勇者的誓言蒸腾泪水。\n梦想,可大可小可远可近可笑可赞叹。\n愿在执着勇敢之岁月,见它光芒万道,见它终成现实。\n'
s = '当枯萎的落叶灾难般的落下,当瓢泼的大雨坠毁般的浸淋。\n在漫长的黑夜破晓之前,在无数次期待破灭之后。\n用无尽的伤痛串联成线,用无边的热情抽丝剥茧。\n以蝉蛹的坚韧默默倒数,以勇者的誓言蒸腾泪水。\n梦想,可大可小可远可近可笑可赞叹。\n愿在执着勇敢之岁月,见它光芒万道,见它终成现实。\n'
**(3)语法: 字符串.partition(分隔符)**
把str以分隔符为标准,分割成三部分,str前,str和str后
a = 'abcd哈fgabcd哈123'
a.split('哈') # 返回的是列表
a.partition('哈') # 默认是第一个分割,分成三部分,返回的是元组
['abcd', 'fgabcd', '123']
('abcd', '哈', 'fgabcd哈123')
如果想从右边开始分割(还是加个“r”):
'abcd哈fgabcd哈123'.rpartition('哈')
('abcd哈fgabcd', '哈', '123')
**(1)语法: 字符串.join(这里是一个包含字符串的序列)**
'-->'.join('abcd')
'a-->b-->c-->d'
"==>".join("中山大学不在中山")
'中==>山==>大==>学==>不==>在==>中==>山'
面试易考点:(先了解)
如何利用字符串 'Life is short I use python'
输出 :'python use I short is Life'
s = 'Life is short I use python'
s = "我爱北京天安门,天安门上太阳升"
s
'我爱北京天安门,天安门上太阳升'
s.replace('天安门', '故宫') #默认全部替换
'我爱北京故宫,故宫上太阳升'
s
'我爱北京天安门,天安门上太阳升'
"我爱北京天安门,天安门上太阳升".replace('天安门', '故宫',1) #替换一次
'我爱北京故宫,天安门上太阳升'
可以利用这种方法删除字符串里的某些字符
"我爱北京天安门,天安门上太阳升".replace('北京','') #用空字符串来替换即可
'我爱天安门,天安门上太阳升'
s #字符串是不可变数据类型,所有的操作都返回新的字符串对象
'我爱北京天安门,天安门上太阳升'
练习:如何使用replace()把--'hello world' =====》》变成 'helAo world'
s = 'hello world'
s
'hello world'
(1)语法:
字符串.center(宽度, 填充的字符串)
a = 'python'
a
'python'
b = a.center(49, '*')
b
'**********************python*********************'
len(b)
49
**(1)str.lower()** **转换str 中所有大写字符为小写**
a = "ADFEdifeiASF"
a.lower() # 返回新的对象
'adfedifeiasf'
a
'ADFEdifeiASF'
**(2)str.upper()** **转换 str 中的小写字母为大写**
a ='sdfsdfefsf'
a.upper() #返回新的对象
'SDFSDFEFSF'
a
'sdfsdfefsf'
**(1)去除两边—— 字符串.strip(可以传入指定去除什么)** - 删除str字符串两端的空白字符以及特殊字符 - 这里的特殊字符包括制表符\t、回车符\r、换行符\n
b = " 哈哈 "
b
b.strip() # 默认去除空格
' 哈哈 '
'哈哈'
b = "\t哈哈\r\n"
b
b.strip()
'\t哈哈\r\n'
'哈哈'
b = "\t哈哈哈哈---++哈哈"
b
b.strip('哈') # 去除两端所有的‘哈’
'\t哈哈哈哈---++哈哈'
'\t哈哈哈哈---++'
**(2)去除单边** - 字符串.rstrip()——只去除右边的空格和特殊字符 - 字符串.lstrip()——只去除左边的空格和特殊字符
a = '\n哈哈\t '
a.rstrip()
'\n哈哈'
a = '\n哈哈\t @'
a.rstrip("@")
'\n哈哈\t '
**(1)字符串.format()**
print('{}的年龄是{}岁{}'.format('小哥哥', 20 ,'!')) #{}什么都不填写就依次传入
小哥哥的年龄是20岁!
print('{2}的年龄是{0}岁{1}'.format('小哥哥', 20, '!')) #也在{}里面填入索引值
!的年龄是小哥哥岁20
print("{0}就是一个大城市{1}, {0}房价很贵, {0}是一个古城".format("北京","的代表"))
北京就是一个大城市的代表, 北京房价很贵, 北京是一个古城
'{name}的年龄是{age}'.format(age=20,name='小哥哥') # 参数位置可以不按顺序显示。
'小哥哥的年龄是20'
姓名 = '小哥哥'
节日名称 = '情人节快乐'
print('''亲爱的{填写姓名}:
您好,祝您{填写节日名称}!'''.format(填写姓名=姓名,填写节日名称=节日名称))
亲爱的小哥哥: 您好,祝您情人节快乐!
场景:用Python设计一个程序,可以打印一下祝福语:
致某某某:
今年是XXXX年的元旦,
我的祝福送四方,
东方送你摇钱树,
西方送你永安康,
南方送你成功路,
北方送你钱满仓。
四面八方全送到金银财宝当头照,
新年快乐。
——你的某某某
使用字符串对象的format()的方法,将第一个某某某替换成你想要祝福的人名(从键盘获取),XXXX年替换成你想要输入的年份(从键盘获取),第二个某某某可以替换成你的名字从键盘获取。
方法 | 描述 |
---|---|
title() | 每个单词首字母大写 |
lower()/upper() | 全部小写/大写 |
capitalize() | 首字母大写,其余小写 |
swapcase() | 反转大小写 |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串,相对于运算符而言,性能更佳 |
rstrip() | 删除字符串字符串末尾的空格. |
istrip() | 删除字符串开头的空格 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
len(string) | 返回字符串长度 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
startswith(str, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
lstrip() | 截掉字符串左边的空格或指定字符。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
split(str="", num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
replace(old, new [, max]) | 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |