Python字符串

Posted faye9898

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字符串相关的知识,希望对你有一定的参考价值。

字符串:

数据类型的分类

可变(不可哈希)的:list dict set
不可变(可哈希)的:str bool int tuple

  1. 切片

    基本结构:

    ? str[start : end : step]

    ? step步长默认为1

    ? start或者end不写的话默认为第一个值与最后一个值

    s = "我爱Python"
    s1 = s[:]
    print(s1) #这是切片整个字符串,相当于是copy了
    s2 = s[2:] #只写了开头没有写结尾,所以是从索引为2的字符开始到最后
    print(s2)
    s3 = s[:5] #这里只写了结尾没有写开头,所以是从第一个字符到索引为4的字符,注意:end这里是开区间,是取不到这个值的,只能取到5前面的数字即4
    print(s3)
    我爱Python
    Python
    我爱Pyt
    • 倒切:

      易错点:python切片一定是从左往右走的,要让它从右往左走,step步长就要设置为负数

      s = "987654321"
      s1 = s[-1:-5] #这里是打不出来东西的,因为python默认步长是1,只能从左往右走。
      print(s1)
      s2 = s[-1:-5:-1] #要把步长设置为-1,才会倒着走!而且倒着只能走到索引为-4的字符这里
      print(s2)
      s3 = s[-5:-1] #这里走不到最后,怎么办呢
      print(s3)
      s4 = s[-5:]  #直接用:表示最后
      print(s4)
      s5 = s[::-1] #倒序打印全部
      print(s5)
      1234
      5432
      54321
  2. 常用方法

    1. 全部变大写--- .upper()

      全部变小写--- .lower()

      大小写转换--- .capitalize()

      s = "Hello,I'm Faye!"
      s1 = s.upper()
      print(s1)
      print(s)
      HELLO,I'M FAYE!
      Hello,I'm Faye!

      不会对原字符串产生任何影响

      P.S: 在做验证码的时候就可以用这个:

      if your_code.upper() = code.upper()
    2. 以什么为开始--- .startswith()

      以什么为结尾--- .endswith()

      s = "欢迎来到Faye的博客"
      print(s.startswith())
    3. .replace() ---替换

      s = "今天你学习了吗?今天你更博学了吗?今天你瘦了吗?"
      s1 = s.replace("今天","昨天")
      s2 = s.replace("今天","昨天",2)  #可以选择替换几个,这里是2表示只替换前面两个
      print(s)
      print(s1)
      print(s2)
      今天你学习了吗?今天你更博学了吗?今天你瘦了吗?
      昨天你学习了吗?昨天你更博学了吗?昨天你瘦了吗?
      昨天你学习了吗?昨天你更博学了吗?今天你瘦了吗?
    4. 去除首尾的空白--- .strip()

      去除左边的空白--- .lstrip()

      去除右边的空白--- .rstrip()

      1. 空格、 、 都属于空白

      2. strip还能去掉首尾的指定字符,注意是首尾的!

        s = "abc你好22abcPython520"
        s1 = s.strip("5aonb20")  #strip里的字符顺序不重要
        print(s1)
        c你好22abcPyth
    5. split ---默认按照空格分隔,返回一个列表

      s = "我 喜欢 Python"
      s1 = s.split()
      print(s)
      print(s1)
      我 喜欢 Python
      ['我', '喜欢', 'Python']

      也可以指定字符串分隔

      s = "我,一直,都,很喜欢,学习," #注意结尾有个“,” 分隔出来是空字符串
      s1 = s.split(",")
      s2 = s.split(",",2)  #2表示就分隔前两个
      print(s1)
      print(s2)
      ['我', '一直', '都', '很喜欢', '学习', '']
      ['我', '一直', '都,很喜欢,学习,']
    6. join ---联合字符串?返回一个字符串

      s = "Faye"
      s1 = "-".join(s)
      print(s1)
      s2 = "0.0"
      s3 = s2.join(s)
      print(s3)
      F-a-y-e
      F0.0a0.0y0.0e

      如果是列表,列表内容只能是字符串,不能是数字,不能是布尔型

      s = ['haha','你好',"好久不见"] 
      s1 = ",".join(s)
      print(s1,type(s1))
      haha,你好,好久不见 <class 'str'>

      如果是数字或者布尔型则会报错.

    7. count ---数出字符串某个字符出现的次数

      s = "今天天气不错,希望天天都能有这样的天气"
      s1 = s.count("天")
      s2 = s.count("天气")
      print(s1)
      print(s2)
      5
      2
    8. find ---查找字符串出现的索引

      s = "哈嗝哈哈大家好,我在这里哈哈"
      s1 = s.find("哈哈") #找到第一个出现的索引
      print(s1)
      s2 = s.find("不") #,如果找不到会返回-1
      print(s2)
      s3 = s.find("哈哈",10) #切片找,这里是从索引为10到最后
      print(s3)
      2
      -1
      12
    9. is系列

      1. isalnum() 字符串由字母或数字组成

      2. isalpha() 字符串只由字母组成

        注意:

        • 对于unicode string,isalnum()和isalpha()会根据字符串中的字符是否属于Unicode编码的LETTER区域来判断是否都由字母组成。所以得出的结果为True,不一定表示只有26个英文字母。
        s = "Faye123"
        s1 = "哈哈哈"
        print(s.isalnum())
        print(s1.isalnum())
        True
        True
      3. isdigit() 字符串只由数字组成

      4. isdecimal() 字符串只由十进制的数字组成

      5. isnumeric() 这个方法很神奇,能识别罗马数字、中文数字

        num = "12①一Ⅰ"
        print(num.isdigit())
        print(num.isdecimal())
        print(num.isnumeric())
        False
        False
        True

      isdecimal可以用于:

         if s1.isdecimal():
             s1 = int(s1)
         else:
             print("输入错误!请输入一个整数!")
      • 注意:这三种方法都只是判断数字,不能有负号,不能有小数点。

        num = "20.19"
        print(num.isdigit())
        print(num.isdecimal())
        print(num.isnumeric())
        False
        False
        False
      • 那要是是小数或者是负号怎么判断,我写了一个函数,可能写得不够简单,请大家指教!

        def fun(a):
            flag = 1
            a = str(a)
            if a[0] == "-":
                a = a.replace("-","0",1)
                flag = 0
            if a.isdecimal():
                if flag == 1:
                    print("是正整数!")
                else:
                    print("是负整数!")
            elif a.count(".") == 1 and not a.startswith(".") and not a.endswith("."):
                print("是小数")
            else:
                print("输入的不是数字!")
        fun(23.4)
        fun(-57.2)
        fun(-12)
        fun(2019)
        是小数
        是小数
        是负整数!
        是正整数!
    10. in,not in

      s = "好好学习,天天向上"
      print("天天" in s)
      print("天上" in s) #一定要是连续的字符串在里面才是True
      print("天上" not in s)
      True
      False
      True

      列表里是以引号为单位的

      s = ["你好","Python"]
      print("Python" in s)
      print("Py" in s)
      True
      False
    11. len() ---计算字符串的长度

      a = "哈hh哈哈 123,"
      print(len(a))
      10

      不管中文还是英语还是数字还是空格还是标点,都是1个长度

以上是关于Python字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python中verbaim标签使用详解

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

python [代码片段]一些有趣的代码#sort

使用 Python 代码片段编写 LaTeX 文档