美文网首页
2020-07-09Python学习笔记20 字符串方法

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

作者: 建渐升辉 | 来源:发表于2020-07-09 22:17 被阅读0次

    一些关于自己学习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 字符串方法

          本文链接:https://www.haomeiwen.com/subject/oyuecktx.html