0
点赞
收藏
分享

微信扫一扫

day9-字符串总结

舟海君 2022-04-24 阅读 42
python

字符串进阶总结

字符串相关函数

  • len() 计算长度

  • str()类型转换

    所有的数据都可以转换成字符串;转换的时候是在数据的打印值外面加引号
    
    num = 123
    # str(num)  -  '123'
    
    num2 = 1.23
    # str(num2)     -  '1.23'
    
    list1 = [10,20,30]
    print(list1)        # [10, 20, 30]
    # str(list1)    -  '[10, 20, 30]'
    
    list2 = ["abc",10,20]
    print(list2)        # ['abc', 10, 20]
    # str(list2)        # "['abc', 10, 20]"
    
    list2 = ["abc",10,20,'ab']
    print(list2)        # ['abc', 10, 20, 'ab']
    # str(list2)     -  "['abc', 10, 20, 'ab']"
    
    dict1 = {'a':10,"b":20}
    print(dict1)        # {'a': 10, 'b': 20}
    # str(dict1)      - "{'a': 10, 'b': 20}"
    str1 = str(dict1)
    for x in str1:
        print(x)
    
    nums = [10, 20, 30]
    new_str1 = str(nums)
    print(new_str1)     # '[10, 20, 30]'
    
    nums.append(100)
    print(nums)
    
  • eval(字符串)

    作用:获取指定字符串引号中的内容(去取字符串的引号)

    注意:这儿的字符串去掉引号以后必须是一个合法的表达式

    # 1)去掉引号以后是合法的数据  -  str的反向操作
    result = eval('100')     # 100
    print(result, result * 2, result + 10)
    
    # result = eval('abc')        # 报错
    
    result = eval('"abc"')      # "abc"
    print(result, len(result))
    
    
    result = eval('[10, 20, 30]')   # [10, 20, 30]
    result.append(100)
    print(result)       # [10, 20, 30, 100]
    
    
    # 2) 去掉引号以后是合法的表达式
    result = eval('100 + 200')      # 100 + 200
    print(result)
    
    abc = 10
    result = eval('abc + 100')          # abc + 100
    print(result)
    
    nums = [10, 20, 30]
    result = eval('nums')       # nums
    print(result)
    
    
    nums = [10, 20, 30]
    eval('nums.append(100)')        # nums.append(100)
    print(nums)
    
    
    def func2():
        print('你好吗?')
    
    
    def func3():
        print('我不好!')
    
    
    # funcname = input('请输入需要调用的函数名:')
    # eval(funcname+'()')
    

字符串方法

  • join

    作用:将序列中的元素用指定的字符串连接成一个新的字符串(序列中的元素必须全部都是字符串)

    # 'helloworld!你好世界'
    result = ''.join(list1)
    print(result)       # 'helloworld!你好世界'
    
    result = ','.join(list1)
    print(result)       # 'hello,world!,你好,世界'
    
    result = '123'.join(list1)
    print(result)       # 'hello123world!123你好123世界'
    
    str1 = 'hello'
    # 'h e l l o'
    result = ' '.join(str1)
    print(result)       # 'h e l l o'
    
    # 练习:将nums中的元素拼接成一个数字, 102030452
    nums = [10, 20, 30, 4, 52]
    result = ''.join([str(x) for x in nums])
    print(int(result))       # 102030452
    
    
    # 练习:将nums中所有的个位数拼接成一个数字字符串, '09042'
    nums = [10, 29, 30, 4, 52]
    result = ''.join([str(x % 10) for x in nums])
    print(result)       # '09042'
    
    
    # 练习:将list1中所有的数字用'+'连接,并且计算他们的和:  '19+1.23+8+22.2=50.43'
    list1 = [19, 'abc', True, 1.23, 8, 22.2, '环境']
    result = '+'.join([str(x) for x in list1 if type(x) in (int, float)])
    print(result, eval(result), sep='=')
    
  • split 切割

    # 1) 字符串1.split(字符串2)   -    将字符串1中所有的字符串2作为切割点对字符串1进行切割,返回一个包含多个字符串的列表
    # 2) 字符串1.split(字符串2, N)   -    将字符串1中前N个字符串2作为切割点对字符串1进行切割,返回一个包含多个字符串的列表
    
    str1 = 'abc123hello123你好123Python'
    result = str1.split('123')
    print(result)       # ['abc', 'hello', '你好', 'Python']
    
    # 注意:如果切割点在字符串开头、或者字符串结尾、或者连续出现多个切割点都会产生空串
    str1 = '123abc123hello123123你好123Python123'
    print(str1.split('123'))        # ['', 'abc', 'hello', '', '你好', 'Python', '']
    
    
    str1 = 'abc123hello123你好123Python'
    print(str1.split('123', 2))     # ['abc', 'hello', '你好123Python']
    
  • replace 替换

    # 1)字符串1.replace(字符串2, 字符串3)  -  将字符串1中所有的字符串2都替换成字符串3
    # 2)字符串1.replace(字符串2, 字符串3, N)  -  将字符串1中前N个字符串2都替换成字符串3
    
    str1 = 'how are you? Im fine, Thank you! you see see, one day day!'
    # you -> me
    result = str1.replace('you', 'me')
    print(result)       # 'how are me? Im fine, Thank me! me see see, one day day!'
    
    
    result = str1.replace('you', 'me', 1)
    print(result)       # 'how are me? Im fine, Thank you! you see see, one day day!'
    
  • strip

    # 字符串.strip()  -  去掉字符串前后的空白字符
    # 字符串.strip(字符)
    print('------------------------------------华丽的分割线-----------------------------------')
    str1 = '   \t \n        good good study     \n     '
    result = str1.strip()
    print(result)
    
    str2 = '///good good study/'
    result = str2.strip('/')
    print(result)
    
  • count

    # 字符串1.count(字符串2)  - 统计字符串1中字符串2出现的次数
    str1 = 'how are you? Im fine, Thank you! you see see, one day day!'
    print(str1.count('you'))
    print(str1.count('a'))
    
  • maketrans、translate

    # str.maketrans(字符串1, 字符串2)   -   通过字符串1和字符串2创建替换对应关系表
    # 字符串.translate(对应关系表)  -  按照对应关系表将字符串中字符进行替换
    table = str.maketrans('abc', '123')     # a-1,b-2,c-3
    str1 = 'aamnbcabcmn'
    result = str1.translate(table)
    print(result)       # 11mn23123m
    
  • center、ljust、rjust、zfill

    """
    字符串.center(长度, 字符)  -  将指定字符串变成指定长度,不够的用指定字符填充;原字符串放中间
    字符串.ljust(长度, 字符)   -  将指定字符串变成指定长度,不够的用指定字符填充;原字符串放左边
    字符串.rjust(长度, 字符)   -  将指定字符串变成指定长度,不够的用指定字符填充;原字符串放右边
    字符串.zfill(长度)  ==  字符串.rjust(长度, '0')
    """
    
    str1 = 'abc'
    print(str1.center(7, 'x'))      # 'xxabcxx'
    print(str1.ljust(7, 'x'))       # 'abcxxxx'
    print(str1.rjust(7, 'x'))       # 'xxxxabc'
    print(str1.center(2, 'x'))      # 'abc'
    
    num = '123'
    print(num.zfill(6))     # '00123'
    
  • find、index

    字符串1.find(字符串2)     -       获取字符串2在字符串1中第一次出现的位置, 如果字符串2不存在返回-1
    字符串1.index(字符串2)    -       获取字符串2在字符串1中第一次出现的位置, 如果字符串2不存在报错!
    
    字符串1.rfind(字符串2)            -       从后往前
    字符串1.rindex(字符串2)
    
    str1 = 'how are you? Im fine, Thank you! you see see, one day day!'
    print(str1.find('you'))         # 8
    print(str1.index('you'))        # 8
    
    print(str1.find('youu'))        # -1
    # print(str1.index('youu'))     # 报错!
    
    print(str1.rfind('you'))        # 33
    
  • isdigit、isnumeric - 判断是否是纯数字字符串

    # 字符串.isdigit()  -  判断字符串中的元素是否全是数字字符(0~9)
    # 字符串.isnumeric()  -  判断字符串中的元素是否全是具有数字意义的字符
    str1 = '2342'
    print(str1.isdigit())       # True
    print(str1.isnumeric())     # True
    
    str1 = '2342一十百千八九ⅤⅣ捌壹'
    print(str1.isdigit())       # False
    print(str1.isnumeric())     # True
    
    
    print('k'.islower())
    print('M'.isupper())
    
    print('KMsh-23KOP'.lower())
    print('kamsHu823lp'.upper())
    

格式化字符串

# 问题:写代码的时候可能会出现一个字符串中的部分内容无法确定
# xxx今年xx岁!

# 方法1:字符串拼接
str1 = name + '今年' + str(age) + '岁!'
print(str1)

# 方法2:使用格式占位符
str1 = '%s今年%d岁!' % (name, age)
print(str1)

# 方法3:使用f-string
str1 = f'{name}今年{age}岁!'
print(str1)
# 1. 格式占位符创建字符串
"""
语法:包含格式占位符的字符串 % (数据1, 数据2, 数据3,...)
注意:后面括号中的数据必须和前面字符串中的占位符一一对应

常用的格式占位符:
%s      -   字符串占位符,可以对应任何类型的数据
%d      -   整数占位符,可以对应任何数字

%f      -   浮点数占位符,可以对应任何数字
%.Nf    -   保留N位小数
"""
# xxx今年xx岁,月薪:xxxx元!
str1 = '%s今年%d岁,月薪:%.2f元!' % (name, age, 10890)
print(str1)         # '小明今年18岁,月薪:10890.00元!'

price = 34.889

str2 = '价格:%s' % price
print(str2)     # 价格:34.889

str2 = '价格:%d' % price
print(str2)     # 价格:34

str2 = '价格:%f' % price
print(str2)     # 价格:34.889000
# 2. f-string
"""
语法:在字符串最前面加f,就可以在字符串中通过'{表达式}'来提供字符串中变化的部分
"""

# 1)基本用法
name = '小明'
age = 18

str1 = '{name}'
print(str1)     # '{name}'

str1 = f'{name}'
print(str1)     # '小明'

str1 = f'{name * 2}'
print(str1)     # '小明小明'

str1 = f'{name[1]*3}'
print(str1)     # '明明明'

str1 = f'{name}=abc={age + 10}'
print(str1)     # '小明=abc=28'

score = [90, 89, 67]
str1 = f'{name}三门学科的分数:{str(score)[1:-1]}'
print(str1)  # '小明三门学科的分数:90, 89, 67'

# 1)加参数: {表达式:参数}	(口诀:“填 对 数 字”)
# a. 控制小数位数的参数: {表达式:.Nf}
money = 17283
str1 = f'年薪:{money * 13:.2f}元'
print(str1)     #  年薪:224679.00元

# b. 显示百分比: {表达式:.N%}
rate = 0.87
str1 = f'班级及格率:{rate:.2%}'
print(str1)     # 班级及格率:87.00%

# c. 逗号显示金额:{表达式:,}
# 1,000
# 18,293,020,200
money = 172830
str1 = f'年薪:{money * 13:,}元'
print(str1)     # 年薪:2,246,790元

money = 172830
str1 = f'年薪:{money * 13:,.2f}元'
print(str1)     # 年薪:2,246,790.00元


# d.修改填充内容的长度: {表达式:字符>长度}、{表达式:字符<长度}、{表达式:字符^长度}
num = 23
str1 = f'py2202{num:0>5}'
print(str1)

str1 = f'py2202{num:0<5}'
print(str1)

str1 = f'py2202{num:0^5}'
print(str1)

str1 = f'py2202{num:❀>5}'
print(str1)
举报

相关推荐

day9-字符串作业

day9-字符串练习

day9-字符串作业(1)

day9-函数

day9字符串

day9集合和字符串

day8-集合、元组和字符串总结

反转字符串总结

字符串用法总结

字符串总结2

0 条评论