zoukankan      html  css  js  c++  java
  • str 常用操作

    字符串切片
    # 字符串切片  (字符串不可更改)
    s = '123456789'
    s1 = s[0:3]  # 顾头不顾尾
    print(s1, type(s1))  # 123 <class 'str'> str 切换之后还是切片
    s2 = s[-1]
    print(s2)  # 9 取得最后一个数值
    print(s[1:])  # 23456789 从索引1到末尾
    print(s[0:-1])  # 12345678 获得从第1个元素到倒数第2个元素(顾头不顾尾)
    print(s[-1:1:-2]) # 注意:从右往左,步长是-2(反方向步长)
    # print(s[-1:1]) # 注意没有反向步长, 是空字符串
    print(s[:5:2])  # 正方向步长
    print(s[::])  # 全部取出来
    

    字符串常用的操作方法

    # replace 对字符串的任何修改都不会影响原字符串
    t = '张三很高,张三很牛逼,张三很优秀'
    t1 = t.replace('张三', '李四')  # 默认全部替换
    print(t1)  # 李四很高,李四很牛逼,李四很优秀
    print(t)  # 张三很高,张三很牛逼,张三很优秀
    # 从左到右一次替换两个,此方法无法从中间开始替换
    print(t.replace('张三', '李四', 2)) # 李四很高,李四很牛逼,张三很优秀
    
    
    #  strip() 方法删除任何前导(开头的空格)和尾随(结尾的空格)字符  空格/tab/换行符都能去掉,中间的不能去掉
    s = '  hello hello	'
    # print(s)
    print(s.strip())  # hello hello
    # 去掉指定字符 从左到右 从右到左,删除指定的字符,如果剩余的字符不再指定的删除范围内则不再继续删除,不会再删除中间的
    s = 'HIH你H好HHK'
    print(s.strip('KHI'))  # 你H好
    print(s.strip('KI'))  # HIH你H好HH
    
    # 重点:split 默认按照空格分割,注意:返回的是一个列表 str----->list
    s = '路飞 索隆 乌索普'
    l = s.split()
    print(l)   # ['路飞', '索隆', '乌索普']
    
    s = '路飞:索隆:乌索普'
    print(s.split(':'))  # ['路飞', '索隆', '乌索普'] 指定字符分割
    
    s = ':路飞:索隆:乌索普:'  # 有n个分割符,生成n+1个元素,注意首尾分割符是空字符串
    print(s.split(":"))  # ['', '路飞', '索隆', '乌索普', '']
    
    # 指定分割个数,剩余的不再分割
    s = '路飞:索隆:乌索普:娜美'
    print(s.split(":", 2))  # ['路飞', '索隆', '乌索普:娜美']
    
    
    # 重点:join 可迭代对象都可用join(列表、字符串等)
    s = '香克斯'
    s = '+'.join(s)
    print(s)  # 香+克+斯
    
    # 列表转化为字符串的方式可用join(列表中的元素必须是字符串类型,否则会报错)
    l = ["路飞", "索隆", "乌索普", "娜美"]
    s = ':'.join(l)
    print(s, type(s))  # 路飞:索隆:乌索普:娜美 <class 'str'>
    print(l)  # ['路飞', '索隆', '乌索普', '娜美']
    
    
    
    
    
    str1 = 'taiBai救急'
    str2 = str1.upper()  # 不会对原来的字符串产生任何影响,都是产生一个新的字符串
    print(str2)  # TAIBAI救急 全部转为大写,中文忽略
    print(str1.lower()) # taibai救急
    
    # 大小写举例应用,验证码忽略大小写
    count = 0
    code = "qwER"
    while count < 3:
        username = input('输入用户名:')
        password = input('输入密码:')
        your_code = input('输入验证码')
        if your_code.upper() == code.upper():
            if username =='zhangsan' and password =='1234':
                print('登录成功')
                break
            else:
                print('用户名或者密码错误')
        else:
            print('验证码错误')
        count += 1
    
    else:
        print('已经输入三次失败了')
    
    # startwitch
    t = 'hello'
    print(t.startswith('he'))   # True
    print(t.startswith('h', 0, 2))  # True
    print(t.endswith('lo'))  # True
    
    # format
    s = '我是{}, 性别{},梦想{}'.format('路飞','男', '海贼王')
    print(s)
    # {}中的数字是索引,索引从0开始,可以重复利用
    s = '我是{0}, 性别{1},成为{2},我依然是{0}'.format('路飞', '男', '海贼王')
    print(s)  # 我是路飞, 性别男,成为海贼王,我依然是路飞
    
    # 关键字
    s = '我是{name}, 性别{sex},梦想{dream}'.format(name='路飞', sex='男', dream='海贼王')
    print(s)  # 我是路飞, 性别男,梦想海贼王
    
    s = 'qwe1234'
    print(s.isdecimal())  # false 判断是否是十进制组成
    print(s.isalpha())   # 判断是否都是字母(常用来判断用户输入的内容是否都是十进制数字)
    print(s.isalnum())  # 判断是否是字母和数字
     #isdigit()
    #True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
    #False: 汉字数字
    #Error: 无
    
    #isdecimal()
    #True: Unicode数字,,全角数字(双字节)
    #False: 罗马数字,汉字数字
    #Error: byte数字(单字节)
    
    #isnumeric()
    #True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
    #False: 无
    #Error: byte数字(单字节)
    #s.isalnum() 所有字符都是数字或者字母
    #s.isalpha() 所有字符都是字母
    
    
    s = 'ABCADAE'
    print(s.count('A'))  # 3 默认全部
    print(s.count('A', 0, 5))  # 指定位置的个数 顾头不顾尾
    
    小练习
    # 判断是否是回文 上海自来水来自海上
    # 方法1
    content = input('请输入字符串')
    if content == content[::-1]:  # 切片反向
        print('是回文')
    else:
        print('不是回文')
    
    # 方法2
    s = input('请输入文字')
    i = 0
    flag = False
    while i < len(s)//2:
        if s[i] == s[-i-1]:
            i += 1
            flag = True
            continue
        else:
            break
    
    if flag:
        print('是回文')
    else:
        print('不是回文')
    
    # 用户输入类似 1+ 2 +3+4 中间有空格,求和
    s = input('输入内容')
    l1 = s.split('+')  # 先转化为列表 ['1', '2 ', '3   ', '6']
    result = 0
    for i in l1:
        result += int(i)  # int 会自动去除空格
    print(result)
    
    s = '123EFDFFD255' # 有多少个数字(0--9)
    count = 0
    for i in s:
        if i.isdecimal():
            count += 1
    print(count)
    
    #1-2+3-4---+99 (排除88 ,使用了continue ,不会继续下一步,n +=1 放在代码的上边. 同时最后一个循环n=98<99, n+1 为99,刚好满足 +99条件)
    s = 0
    n = 0
    while n < 99:
        n += 1
        if n == 88:
            continue
        elif n % 2 == 1:
            s += n
        else:
            s -= n
    print(s)
    
  • 相关阅读:
    线程join
    java线程 WaitAndNotify
    java线程死锁
    多线程并发的3个特性
    常用字符串搜索算法介绍
    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法
    [原创]字符串多模匹配算法之AC自动机理解心得
    客户端javascript访问服务器控件的方法
    [总结]C++实现一个限制对象实例个数的类
    [原创]我的北大ACM POJ1001解答
  • 原文地址:https://www.cnblogs.com/jnsn/p/12724667.html
Copyright © 2011-2022 走看看