• Python之路(第三篇):Python基本数据类型字符串(二)


    一、基本数据类型
    1、字符串 str
    字符串方法介绍(二)
    a --expandtabs( )

    expandtabs( ) 把字符串中的 tab 符号(' ')转为空格
    参数默认为8,注意字符串原有的空格也参与计算长度

    test = "LinGou	LinGengxin"
    v1 = test.expandtabs( )
    #这里是根据字符串的长度计算,expandtabs( )默认为8,执行方式如下
    #"LinGou	LinGengxin"
    #LinGou是6个字符,此时遇到	,expandtabs( )默认为8,要补全2个字符长度,即6+2=8,
    #	之后的字符不用处理
    print(v1)
    
    v2 = test.expandtabs(6)
    #同样的这里也是这样执行,参数为6,
    # 字符串从左到右6个字符一组,LinGou是6个字符,忽略不作处理直接输出,此时遇到	,
    # 前面没有字符参与计算长度,此时需要	直接输出6个空格
    #	之后的字符不用处理
    print(v2)
    
    v3= test.expandtabs(7)
    #参数为7,LinGou是6个字符,此时需要补全1个空格即可
    #注意这里的空格是expandtabs()输出的,不是自带的
    print(v3)
    
    test2 = "LinGou	 wang 	wang"
    v4 =test2.expandtabs(7)
    #字符串原有的空格也参与计算长度
    #参数为7,LinGou是6个字符,遇到第一个	,此时需要补全1个空格即可
    #继续计算,第一个	输出一个空格,之后有一个字符串自带的空格,
    #1个自带空格+wang(4个字符)+1个自带空格=6个长度,遇到	,此时补全1个空格即可
    #第二个	之后的字符不用处理
    print(v4)
    
    
    test3 = "123456	789012345	67890"
    v5 =test3.expandtabs(6)
    #参数为6,计算字符长度,123456长度为6,直接输出不做处理,
    # 前面没有字符参与计算长度,此时需要	直接输出6个空格
    #继续计算,789012,长度为6,直接输出不做处理,
    # 继续计算,345长度为3,遇到	,此时需要补全3个空格
    #第二个	之后的字符不用处理
    print(v5)
    

      

    输出结果

    LinGou  LinGengxin
    LinGou      LinGengxin
    LinGou LinGengxin
    LinGou  wang  wang
    123456      789012345   67890
    

      


    举个例子

    test = "name	email	passwd
    nicholas	123@qq.com	123
    Pony	10001@qq.com	12345
    Tony	10002@qq.com	12345"
    v6 = test.expandtabs(20)
    print(v6)
    

      


    输出结果

    name                email               passwd
    nicholas            123@qq.com          123
    Pony                10001@qq.com        12345
    Tony                10002@qq.com        12345
    

      

    分析:这里的 是换行符,这里可以通过 、 制作一个类似表格的结果。


    b--isalpha()

    isalpha( )判断字符串是否只包含字母、汉字,如包含数字、下划线则输出False

    test = "nicholas"
    v7 = test.isalpha()
    print(v7)
    
    test2 ="nicholas1"
    v8 = test2.isalpha()
    print(v8)
    
    test3 ="尼古拉斯"
    v9 = test3.isalpha()
    print(v9)
    
    test4 ="nicholas尼古拉斯"
    v10 = test4.isalpha()
    print(v10)
    

      

    输出结果

    True
    False
    True
    True
    

      

    c--isdecimal()、isdigit()、isnumeric


    isdecimal( )判断当前输入是否是数字
    isdigit()判断当前输入是否是数字

    test = "123"
    v11 = test.isdecimal()
    v12 = test.isdigit()
    v13 = test.isnumeric()
    print(v11, v12,v13)
    
    test1 = "②"
    # 对于这种特殊符号的2,有的函数支持,有的不支持,所以出现了两种结果
    v14 = test1.isdecimal()
    v15 = test1.isdigit()
    v16 = test.isnumeric()
    print(v14, v15,v16)
    
    test2 = "IV" # 罗马数字,输入法特殊符号里输入,不能直接写英文字母I V
    v17 = test2.isdecimal()
    v18 = test2.isdigit()
    v19 = test.isnumeric()
    print(v17, v18,v19)
    
    
    test3 = "二" # 汉字
    v20 = test2.isdecimal()
    v21 = test2.isdigit()
    v22 = test.isnumeric()
    print(v20, v21,v22)



    输出结果

    True True True
    False True True
    False False True
    False False True
    

      

    分析:第三种罗马数字"IV",经测试,isdigit()、isdecimal()都输出False,有的博客写错了,写成isdigit()输出True,isdecimal()输出False。
    digit:数字, decimal:十进制的,小数
    numeric:数字的; 数值的

    d--isidentifier()


    判断字符串是否是合法的标识符,字符串仅包含中文字符合法,实际上这里类似判断变量名是否合法。
    一般的变量命名以字母、数字、下划线,但数字不能开头,以上都会输出True
    这里输出True的情况要加上仅包含中文字符,使用python内部函数名、标识符。

    test = "123"
    test1="_123"
    test2="def"
    test3="中国"
    v23 = test.isidentifier()
    v24 = test1.isidentifier()
    v25 = test1.isidentifier()
    v26 = test1.isidentifier()
    print(v23,v24,v25,v26)
    

      

    输出结果

    False True True True
    

      

    e--isprintable()


    判断是否存在不可显示的字符
    换行 制表符等在打印时无法显示出来

    test = "123"
    test1 = "123
    "
    test2 = "123	"
    v27 = test.isprintable()
    v28 = test1.isprintable()
    v29 = test2.isprintable()
    print(v27, v28,v29)
    

      


    输出结果

    True False False
    

      


    f--isspace()


    判断是否全部是空格,必须全部都是,空字符串也会输出False
    下面的test3就是空字符串。

    test = "123"
    test1 = "12 3"
    test2 = " "
    test3 =""
    v30 = test.isspace()
    v31 = test1.isspace()
    v32 = test2.isspace()
    v33 = test3.isspace()
    print(v30, v31,v32,v33)
    

      


    输出

    False False True False
    

      



    g--istitle()、title()

    istitle()判断是否是标题,即英文语句每个单词的首字母都是大写的
    title()将英文语句转换为标题类型,即将每个单词的首字母都转为大写的

    test = "Return True if all cased characters in S are uppercase and there is"
    v1 = test.istitle()
    print(v1)
    v2 = test.title()
    print(v2)
    v3 = v2.istitle()
    print(v3)
    

      

    输出结果

    False
    Return True If All Cased Characters In S Are Uppercase And There Is
    True
    

      


    h--join()

    将字符串中的每一个元素按照指定分隔符进行拼接

    test = "大王叫我来巡山"
    t1 = " "
    t2 = "*"
    v1 = t1.join(test)
    v2 = t2.join(test)
    print(v1)
    print(v2)
    

      


    输出结果

    大 王 叫 我 来 巡 山
    大*王*叫*我*来*巡*山
    

      

    i--center()、ljust()、rjust()

    center( ) 设置宽度,并将字符串内容居中,其他地方根据参数进行填充,默认为空白
    ljust()设置宽度,并将字符串内容放在左边,其他地方根据参数进行填充,默认为空白
    rjust()设置宽度,并将字符串内容放在右边,其他地方根据参数进行填充,默认为空白

    test = "nicholas"
    v1 = test.center(20,"*")
    v2 = test.ljust(20,"*")
    v3 = test.rjust(20,"*")
    print(v1)
    print(v2)
    print(v3)
    

      



    输出结果

    ******nicholas******
    nicholas************
    ************nicholas
    

      


    j--lower()、islower()、upper()、isupper()

    lower()将英文字符转换为小写
    islower()判断字符串是不是全部是小写
    upper()将英文字符转换为大写
    isupper()判断字符串是不是全部是大写

    test = "Nicholas"
    v1 = test.lower()
    v2 = test.islower()
    v3 = test.upper()
    v4 = test.isupper()
    print(v1)
    print(v2)
    print(v3)
    print(v4)
    

      



    输出结果

    nicholas
    False
    NICHOLAS
    False
    

      


    k--strip()、lstrip()、rstrip()


    strip(),移除指定的字符串,默认可以移除空格、 、 ,也可以指定要移除的字符
    lstrip()移除原字符串左边的指定的字符串,默认可以移除空格、 、 ,也可以指定要移除的字符
    rstrip()移除原字符串右边的指定的字符串,默认可以移除空格、 、 ,也可以指定要移除的字符

    test = " Nicholas "
    test2 = " 
    Nicholas
    "
    test3 = "**Nicholas**"
    v1 = test.strip()
    v2 = test.lstrip()
    v3 = test.rstrip()
    v4 = test2.strip()
    v5 = test2.lstrip()
    v6 = test2.rstrip()
    v7 = test3.strip("*")
    v8 = test3.lstrip('*')
    v9 = test3.rstrip('*')
    print(v1)
    print(v2)
    print(v3)
    print(v4)
    print(v5)
    print(v6)
    print(v7)
    print(v8)
    print(v9)
    

      

    输出结果

    Nicholas
    Nicholas 
     Nicholas
    Nicholas
    Nicholas
    
     
    Nicholas
    Nicholas
    Nicholas**
    **Nicholas
    

      

    l--maketrans()、translate()

    maketrans(),和translate()一起用
    maketrans()做一种对应关系,translate()对其进行转换

    str1 = "aeiou"
    str2 = "12345"
    test = "Nicholas"
    
    v1 = str.maketrans("aeiou","12345")
    #做一种对应关系
    v2 = test.translate(v1)
    #进行转换,类似对明文密码进行加密
    #根据对应关系,遇到i替换为3,遇到o替换为4,在没有对应关系的字符不变。
    print(v2)
    

      



    输出结果

    N3ch4l1s
    

      

    m--partition()、rpartition()、split()、rsplit()

    partition()用来根据指定的分隔符将字符串进行分割。结果是分割为三部分,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
    这个指定的字符是从左向右数的,如之后还有相同的字符也不再进行分割。

    rpartition()功能与partition()相同,只是计算指定字符是从右向左数的。同样也是分为三部分,第一个为分隔符右边的子串,第二个为分隔符本身,第三个为分隔符左边边的子串。
    同样的,之后还有相同的字符也不再进行分割。

    split()指定分隔符对字符串进行切片,如果参数num 有指定值,则分隔 num个子字符串,但是指定的字符串不在出现在输出的结果中,这个是从左到右进行分割的
    rsplit()与split()功能相同,只是这个是从右向左分割的。

    str1 = "aeiouaeiou"
    v1 = str1.partition("i")
    v2 = str1.rpartition("i")
    v3 = str1.split("i")
    v4 = str1.rsplit("i")
    print(v1)
    print(v2)
    print(v3)
    print(v4)
    

      


    输出结果

    ('ae', 'i', 'ouaeiou')
    ('aeiouae', 'i', 'ou')
    ['ae', 'ouae', 'ou']
    ['ae', 'ouae', 'ou']
    

      


    再举个例子

    str1 = "aeiouaeiouijk"
    
    v1 = str1.split("i",2)
    v2 = str1.rsplit("i",2)
    print(v1)
    print(v2)
    

      


    输出结果

    ['ae', 'ouae', 'ouijk']
    ['aeiouae', 'ou', 'jk']
    

      


    分析:这里加了参数2,进行了2次分割。


    n--splitlines()


    根据换行符 进行分隔,如果参数为False,不包含换行符,如果为True,则保留换行符。

    str1 = "aeio
    uaeio
    uijk"
    v1 = str1.splitlines()
    v2 = str1.splitlines(False)
    v3 = str1.splitlines(True)
    print(v1)
    print(v2)
    print(v3)
    

      

    输出结果

    ['aeio', 'uaeio', 'uijk']
    ['aeio', 'uaeio', 'uijk']
    ['aeio
    ', 'uaeio
    ', 'uijk']
    

      

    o--swapcase()

    用于对字符串的大小写字母进行转换。
    大写字母转为小写,小写字母转为大写字母

    str1 = "Nicholas"
    str2 = "NicHolAs"
    v1 = str1.swapcase()
    v2 = str2.swapcase()
    print(v1)
    print(v2)
    

      


    输出结果

    nICHOLAS
    nIChOLaS
    

      

    p--replace()

    字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

    str1 = "NicholasNicholasi"
    v1 = str1.replace("i","niubi")
    v2 = str1.replace("i","niubi",2)
    print(v1)
    print(v2)
    

      


    输出结果

    NniubicholasNniubicholasniubi
    NniubicholasNniubicholasi
    

      

    字符串

    count:(python中的count()函数,从字面上可以知道,他具有统计功能)

    Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

    语法

    count()方法语法:

    str.count(sub, start= 0,end=len(string))

    参数

    • sub -- 搜索的子字符串
    • start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
    • end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

    返回值

    该方法返回子字符串在字符串中出现的次数。

     例子

    1 strings="How do you do"
    2 
    3 print(strings.count("o"))

    其中7个重要的方法要熟练掌握


    join()
    split()
    find()
    strip()
    upper()
    lower()
    replace()


    二、字符串的其他知识

    1、索引,下标

    获取字符串中的某一个字符
    字符串的索引,下标,下标是从0开始的
    str1 = "nicholas"
    n i c h o l a s
    0 1 2 3 4 5 6 7

    str1 = "Nicholas"
    v1 = str1[5]
    v2 = str1[0:3]#注意这里是冒号,不是逗号,这里是前闭后开区间,即[0,3)
    print(v1)
    print(v2)
    

      


    输出结果

    l
    Nic
    

      

    2、len()

    获取字符串长度,获取当前字符串中由几个字符组成

    str1 = "Nicholas"
    str2 ="尼古拉斯"
    v1 = len(str1)
    v2 = len(str2)
    print(v1)
    print(v2)
    

      

    输出结果

    8
    4
    

      

    3、for循环

    for 变量名 in 字符串:
    for循环可以遍历任何序列的项目,如一个列表或者一个字符串,简单的说就是for循环会自动对字符串的每个字符进行循环。等同于while循环中加上count = count + 1的效果。

    str1 ="尼古拉斯真牛逼!"
    i = 0
    while i < len(str1):
        v = str1[i]
        print(v)
        i = i + 1
    print("!!!!!")
    

      


    输出结果

    尼
    古
    拉
    斯
    真
    牛
    逼
    !
    !!!!!
    

      


    用for循环也可以实现

    str1 ="尼古拉斯真牛逼!"
    for i in str1 :
    #这里的i就会遍历str1中的所有字符,就是把字符串里的字符都跑一遍
    #不用指定v=str1[i],可以直接print(i)
        print(i)
    print("!!!!!")
    

      

    输出结果

    尼
    古
    拉
    斯
    真
    牛
    逼
    !
    !!!!!
    

      

    4、切片
    根据下标输出内容

    str1 ="尼古拉斯真牛逼!"
    v = str1[0:-1]
    #这里的-1是指倒数第二个字符
    print(v)
    

     

    输出内容

    尼古拉斯真牛逼
    

     

    下标负数的数法下标负数的数法,下标可以为空表示取到头或尾

    尼     古    拉    斯    真    牛    逼   !

    -8    -7    -6     -5     -4   -3      -2    -1   

    即从右向左开始,从-1开始数起。

    举个例子

    name = " Nicholas"
    
    v = name[-2:]
    
    print(v)
    

     输出结果

    1 as

      

      

    5、字符串

    一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串

    Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。


    6、range()

    range()函数可创建一个整数列表,一般用在 for 循环中。
    创建连续或不连续的数字。

    Python2中range()直接创建内容,python3中只有for循环时,才一个一个创建

    i = 0
    for i in range(10):
        print(i)
    

      

    输出结果

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    

      

    range()函数语法
    range(start, stop[, step])

    三个参数是开始,结束,步长,开始结束是前闭后开区间,第三个参数就是步长,默认为1,可以看做是跳过(步长-1)个整数输出一次。如果是负数,则是反向减去。
    例子

    i = 0
    for i in range(1,20,3):
        print(i)
    

      



    输出结果

    1
    4
    7
    10
    13
    16
    19
    

      

  • 相关阅读:
    锋利的BFC
    inline和inline-block的间隙问题
    margin和padding的四种写法
    js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结
    使用vscode自动编译less
    redux获取store中的数据
    react显示隐藏动画
    react使用路由
    react中使用fetchjsonp获取数据
    vue兼容到ie9
  • 原文地址:https://www.cnblogs.com/Nicholas0707/p/8547730.html
Copyright © 2020-2023  润新知