2020-07-09Python学习笔记20 字符串方法

一些关于自己学习Python的经历的内容,遇到的问题和思考等,方便以后查询和复习。

声明:本人学习是在扇贝编程通过网络学习的,相关的知识、案例来源于扇贝编程。如果使用请说明来源。

第二十关:字符串方法

字符串转化

str = 'feel THE change'

str.upper()

# 将 str 转成全大写并输出

print(str)

str.lower()

# 将 str 转成全小写并输出

print(str)

str.swapcase()

# 将 str 进行大小写互换并输出

print(str)

str.title()

# 将 str “标题化”并输出

print(str)

结果是:

feel THE change

feel THEchange

feel THANGE change

feel THE change

原封不动的打出来了,说明转化是没有作用的,所以想到转化后需要赋值,于是改为


str = 'feel THE change'

str = str.upper()

# 将 str 转成全大写并输出

print(str)

str = str.lower()

# 将 str 转成全小写并输出

print(str)

str = str.swapcase()

# 将 str 进行大小写互换并输出

print(str)

str = str.title()

# 将 str “标题化”并输出

print(str)

结果是:

FEEL THE CHANGE

feel the change

FEEL THECHANGE

Feel The Change

为什么第三个大小写相互转换中,大写没有变成小写呢

第三个时行时不行的,不知道怎么搞的

第三个之所以不对,是因为前两个步骤对str变量进行重新赋值,第三个根据第二个赋值结果进行大小写互换的,结果和答案不一致,答案或题意是针对原始的字符串进行操作的。

经过调试,只有第一个用赋值的方式,第三个和答案不一样,如果只是第二个用赋值的方式,第三个也和答案不一样,第一第二两个都用赋值的方式,第三个也是和答案不一致。其他三个不影响,是应为其他三个都进行统一的大写、小写、首字母大写,不管字符串是什么,结果都是一样的。而第三个是大小写互换的,所以针对不同的字符串,操作结果就是不同的。


str = 'feel THE change'

# 将 str 转成全大写并输出

print('feel THE change'.upper())  #可以直接用字符串加命令

# 将 str 转成全小写并输出

print(str.lower())   # 可以用变量加命令

str = str.swapcase()

# 将 str 进行大小写互换并输出

print(str)  # 可以转化赋值之后,在用变量调用

# 将 str “标题化”并输出

print(str.title())

FEEL THE CHANGE

feel the change

FEEL the CHANGE

Feel The Change

这个时候,第三个又正常了,有点怪呢。原因见上面说明。这段程序中,因为第一个和第二个没有对变量进行重新赋值,所以第三个可以对变量进行赋值再打印,也可以直接打印转化之后的结果,而结果都是对的,因为此时都是针对原始字符串的操作。

练习:字符串变变变

请你使用 split()、join()和 strip() 方法将$带-你-打-开-编-程-世-界-的-大-门$ 变成带~你~打~开~编~程~世~界~的~大~门。

str = '$带-你-打-开-编-程-世-界-的-大-门$'

str1 = str.strip('$')   #  去掉头和尾的$

#print(str1)

str2 = str1.split('-')   #根据字符串分割了

#print(str2)

str3 = '~'.join(str2)   #用~符号把第二步分割的字符串在链接起来

print(str3)

答案是把三个命令放到一起了,先根据-把字符串给分解了,然后在用~把字符串链接起来,最后是去掉头尾的$.


练习:字符串操作

请按要求对字符串进行相应的操作。

str = 'feel the change'

# 输出 str 中 e 的个数

print(str.count('e'))   #变量名.count(‘字符’)  字符一定要用英文引号引起来

# 输出 str 中 change 的索引值

print(str.find('change'))

# 将 str 中的 change 替换为CHANGE

print(str.replace('change', 'CHANGE'))  # 被替换的和用于替换的都要用英文引号引起来

最初我没有用引号,结果报错了。

例子:输出格式化

format() 方法使用 {} 作为占位符,然后按照参数顺序替换对应的占位符。

我们还可以给占位符编号:

'我叫{0},今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')

# 我叫小贝,今年 18 岁,来自南京

# 调整编号顺序

'我叫{2},今年 {1} 岁,来自{0}'.format('南京', 18, '小贝')

# 我叫小贝,今年 18 岁,来自南京

# 重复编号

'我叫{0},{0}今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')

# 我叫小贝,小贝今年 18 岁,来自南京

我们还可以给占位符命名:

'我叫{name},今年 {age} 岁,来自{city}'.format(name = '小贝', age = 18, city = '南京')

# 我叫小贝,今年 18 岁,来自南京

# 命名后参数顺序不再重要

'我叫{name},今年 {age} 岁,来自{city}'.format(age = 18, city = '南京', name = '小贝')

# 我叫小贝,今年 18 岁,来自南京


  print('今天%s的最高气温是%d度'%(weather[0], weather[1]))

 print('今天{}的最高气温是{}度'.format(weather[0], weather[1]))

对比两种格式化输出字符串的方法,第一种操作符% 直接放在两个部分之间

而使用format方法,其前面必须有小点.因为这是命令,命令和变量之间或字符之间要有小点.链接

一个测验题

str = '$h-e-l-l-o w-o-r-l-d$'

print('.'.join(str.strip('$').split('-')))


将 '.'.join(str.strip('$').split('-')) 拆开来看,先是str.strip('$') 得到 h-e-l-l-o w-o-r-l-d,再 'h-e-l-l-o w-o-r-l-d'.split('-') 得到 ['h', 'e', 'l', 'l', 'o

w', 'o', 'r', 'l', 'd'],最后'.'.join(['h', 'e', 'l', 'l', 'o w', 'o', 'r', 'l', 'd']) 得到 h.e.l.l.o w.o.r.l.d。

第一步先去掉头尾的$,第二步使用-进行分割,第三部使用小点.进行链接


练习:拯救圆周率

魔鬼为了阻止人类进步,将数学瑰宝圆周率占为己有。为了满足它的私欲,魔鬼对圆周率的前99 位进行肆意篡改。

现在你偷偷潜入了魔鬼的地穴,需要凭借智慧和利器 Python 将圆周率恢复。

现在可以公开的情报:

魔鬼最喜欢的数字是 '6',所以它将圆周率中的 '6' 都取走了,并以 '6' 为截点将圆周率切割,形成了一个“破碎的圆周率”,装在列表broken_pi 之中;

魔鬼最害怕的数字是 '9',所以它将圆周率中的 '9' 都换成了空字符 ' ';

broken_pi 已被魔鬼打上了符咒,你需要从中取出碎片,才能对其进行恢复。

broken_pi = [

 '3.1415 2',

  '53587 32384',

 '2',

 '4338327 5028841 71',

  '3  375105820 74 445 230781',

 '40',

 '28',

 '208  8',

 '280348253421170'

]

pi = '6'.join(broken_pi)  # 使用 '6' 将 broken_pi 中的碎片组合起来,用6链接列表中的各个元素

pi = pi.replace(' ', '9')  # 将 pi 中的 ' ' 还原成'9'

print(pi)

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170

第二十关笔记:

字符带小写转化:

upper() 用于将字符串中的小写字母转为大写字母。

lower() 用于将字符串中的大写字母转为小写字母。

capitalize() 用于将字符串的第一个字母变成大写,其他字母变小写。首字符如果是非字母则不变,其他字母变小写。

title() 用于返回“标题化”的字符串——即所有单词的首字母转为大写,其余字母均为小写。

注意:非字母后的第一个字母将转为大写字母。

swapcase() 用于对字符串的大小写字母进行互相转换。

这些都是命令,所以需要用小点.把命令和字符串或变量名链接起来,括号中不写内容

操作结果可以赋值给变量。


分割、组合和移除方法

split() 字符串分割,用于通过指定分隔符对字符串进行分割。split() 方法有两个可选参数,第一个参数为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。第二个参数为最大分割次数,默认为 -1,即不限次数。

'扇 贝 编 程'.split()  # ['扇', '贝', '编', '程']    默认利用空格进行分割

'扇 贝 编 程'.split('')  # ['扇', '贝', '编', '程']   指定用空格进行分割

'扇-贝-编-程'.split('-')  # ['扇', '贝', '编', '程']  利用-进行分割

'扇贝编程'.split('贝编')  # ['扇', '程']          利用指定字符进行分割

'扇 贝 编 程'.split('', 1)  # ['扇', '贝编 程']   利用空格分割,但是限制次数


join() 用于将序列中的元素以指定的字符连接生成一个新的字符串。join() 方法接收一个序列(列表、元组、字符串等)作为参数,. 前面的字符串用于连接符。

# 列表

''.join(['扇', '贝', '编', '程'])  #扇贝编程

'-'.join(['扇', '贝', '编', '程'])  #扇-贝-编-程

# 元组

'-'.join(('扇', '贝', '编', '程'))  #扇-贝-编-程

# 字符串

'-'.join('扇贝编程')  #扇-贝-编-程

列表、元组、字符串等里面的内容都是用英文引号引起来


strip() 用于移除字符串开头和结尾指定的字符(默认为空字符)或字符序列。当传入一个字符串时,会将传入字符串中每个字符依次移除。

' 扇贝编程  '.strip() # '扇贝编程'

'~~扇贝编程~~'.strip('~')  # '扇贝编程'

'~~扇贝~~编程~~'.strip('~')  # '扇贝~~编程'

'_~_扇贝编程_~~'.strip('~_')  # '扇贝编程'

去掉两头的空格或者符号,不需要顺序完全相同,括号中是指定要去除的内容

定位与替换方法:

count() 用于统计字符串中某个字符串出现的次数。第一个参数为要统计次数的字符串,后两个可选参数为在字符串搜索的开始与结束索引。


find() 用于检测字符串中是否包含子字符串,如果包含子字符串返回第一次出现的索引值,否则返回 -1。第一个参数为要查找的子字符串,后两个可选参数为在字符串搜索的开始与结束索引。


replace() 用于将字符串中的指定字符串替换成别的字符串。第一个参数为被替换字符串,第二个参数为替换字符串,第三个可选参数为替换的最多次数,默认为无限次。


格式化输出方法

除了之前说的使用 % 运算符 进行字符串格式化输出,我们还可以使用字符串的 format() 方法达到同样的效果。


'我叫{},今年 {} 岁,来自{}'.format('小贝', 18, '南京')

# 我叫小贝,今年 18 岁,来自南京

注意,format前有个小黑点,用来连接format命令和前面的变量名或者字符串

format() 方法使用{} 作为占位符,然后按照参数顺序替换对应的占位符。


我们还可以给占位符编号:

'我叫{0},今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')

# 我叫小贝,今年 18 岁,来自南京


# 调整编号顺序

'我叫{2},今年 {1} 岁,来自{0}'.format('南京', 18, '小贝')

# 我叫小贝,今年 18 岁,来自南京


# 重复编号

'我叫{0},{0}今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')

# 我叫小贝,小贝今年 18 岁,来自南京


我们还可以给占位符命名:

'我叫{name},今年 {age} 岁,来自{city}'.format(name = '小贝', age = 18, city =

'南京')

# 我叫小贝,今年 18 岁,来自南京


# 命名后参数顺序不再重要

'我叫{name},今年 {age} 岁,来自{city}'.format(age = 18, city = '南京', name = '小贝')

# 我叫小贝,今年 18 岁,来自南京


你可能感兴趣的:(2020-07-09Python学习笔记20 字符串方法)