zoukankan      html  css  js  c++  java
  • 第二章—数据类型字符串str

    字符串

    特性:有序、不可变

    字符串的索引和切片

    索引是按照正向递增(从0开始),反向递减从-1开始。s[索引]返回索引的字符串值
    切片s[M:N:K]返回切片的字符串。当K为负值时,M>N
    >>> s = 'ABCDEFGHIJK'
    >>> s[2]
    'C'

    >>> s = 'ABCDEFGHIJK'
    >>> s[1:5:2]   # 可以进行切片
    'BD'

    当K为赋值的时候,M<N什么都不输出,M>N才会输出结果

    字符串不可变

    >>> s = 'ABCDEFGHIJK'  # 不能对字符串的内部子串进行赋值修改
    >>> s[2] = 'z'
    Traceback (most recent call last):
    File "<pyshell#10>", line 1, in <module>
    s[2] = 'z'
    TypeError: 'str' object does not support item assignment


    >>> s = 'ABCDEFGHIJK'
    >>> a = s >>> print(id(s),id(a)) # 赋值完成后,连个字符串的内存地址一样,指向的是同一个内存地址 89703232 89703232 >>> s = 'james' # s发生改变后,s和a的内存地址不一样了 >>> print(id(s),id(a)) 104912864 89703232

    字符串的循环

    >>> for i in a:
        print(i)    
    A
    B
    C
    D
    E
    F
    G
    H
    I
    J
    K
    
    >>> for index,i in enumerate(a):  # 获取索引和对应的字符串子串的值
        print(index,i)    
    0 A
    1 B
    2 C
    3 D
    4 E
    5 F
    6 G
    7 H
    8 I
    9 J
    10 K

    字符串的方法

    大小写转换的方法有以下几种:
    
    s.upper(): 字符串全部字符转换为大写

    >>> s = 'AbCdEFghijK'
    >>> s.upper()
    'ABCDEFGHIJK'

    s.lower():字符串全部字符转换为小写

    >>> s = 'AbCdEFghijK'
    >>> s.lower()
    'abcdefghijk'

    s.swapcase() :字符串全部字符大小写互换

    >>> s = 'AbCdEFghijK'
    >>> s.swapcase()
    'aBcDefGHIJk'

    s.capitalize():字符串首个单词首字母大写

    >>> s = 'james hsiao'
    >>> s.capitalize()
    'James hsiao'

    s.title(): 字符串中全部单词首字母大写

    >>> s = 'james hsiao'
    >>> s.title()
    'James Hsiao'

    这些用法不需要加参数,不会修改原有的s。


    s.replace(old,new,count)将s中的old子串,替换成new,count为替换的次数(如果子串中有相同的就要用到)

    >>> s.replace("a", '好')  # 把s中的“a”,用‘好’替换
    'my n好me is J好mes hsi好o'

    
    

    >>> s = 'my name is James hsiao'
    >>> s.replace("a", '好',2)  # 只替换两处
    'my n好me is J好mes hsiao'


    字符串去除两侧指定内容的方法有三种:
    s.strip(chars) :去除字符串两侧的指定内容,并且同时去除多个相同的指定内容;参数chars为指定的一个或多个字符,不填入该参数则去除字符串两侧所有空格。
    s.lstrip(chars) :去除字符串左侧的指定内容,并且同时去除多个相同的指定内容;参数chars为指定的一个或多个字符,不填入该参数则去除字符串左侧所有空格。
    s.rstrip(chars) :去除字符串右侧的指定内容,并且同时去除多个相同的指定内容;参数chars为指定的一个或多个字符,不填入该参数则去除字符串右侧所有空格。

    >>> s = '####my name is James hsiao###'
    >>> s.strip("#")
    'my name is James hsiao'


    >>> s = '####my name is James hsiao###'
    >>> s.lstrip('#')
    'my name is James hsiao###'


    >>> s = '####my name is James hsiao###'
    >>> s.rstrip('#')
    '####my name is James hsiao'

    >>> s  # 对原始的s并没有修改后赋值

    '####my name is James hsiao###'


    s.index(元素,M,N)返回元素的索引 从左往右查找,多个相同值时只查最前面一个 可以指定M和N索引查找,缺失默认至开头和至结尾

    >>> s = 'AbCdEFghijKb'
    >>> s.index("b")
    1

    
    

    >>> s = 'AbCdEFghijKb'
    >>> s.index("b",2)  # N缺失代表至结尾,返回‘b’在整个s中的索引
    11

    >>> s = 'AbCdEFbghijKb'
    >>> s.index("b",2,10)  # 返回‘b’在整个s中的索引
    6

    s.rindex(元素,M,N)从右往左查找

    >>> s = 'AbCdEFbghEjKb'
    >>> s.rindex('E')
    9

    s.find(元素,M,N)在s中检测元素是否在其中,在的话返回其索引,不在返回-1.

    >>> s = 'AbCdEFbghEjKb'
    >>> s.find('b')
    1
    >>> s = 'AbCdEFbghEjKb'
    >>> s.find("1")
    -1

    s.rfind(元素,M,N)从右往左查找

    s.count(x,M,N)返回x在s中出现的次数,M和N为指定的索引


    s.center(width,fillchar)width为总共的长度 fillchar为填充的字符,缺失默认为空格

    >>> s = 'AbCdEFbghEjKb'
    >>> s.center(30,"@")
    '@@@@@@@@AbCdEFbghEjKb@@@@@@@@@'

    s.isdigit()判断字符串中是不是只包含数字,是返回True,不是返回False

    >>> s = 'AbCdEFbghEjKb'
    >>> s.isdigit()
    False

    
    
    s.startswith(元素,M,N) 判断是否以...开头,M和N为指定的索引位置,是返回True, 不是返回False
    s.endswith(元素,M,N)判断是否以...结尾,M和N为指定的索引位置是返回True, 不是返回False



    s.split(char)把s按照指定的char进行分割,返回分割后的列表,如果char不在s中,直接返回由s作为元素的列表

    >>> s = 'AbCdEFbghEjKb'              # 字符串转换成列表
    >>> s.split('b')
    ['A', 'CdEF', 'ghEjK', '']

    >>> s = 'AbCdEFbghEjKb'
    >>> s.split('z')
    ['AbCdEFbghEjKb']

    字符串直接转换成列表:list(str)

    >>> a = 'jameshsiao'
    >>> a = list(a)  # 迭代的拆开组成列表的元素
    >>> a
    ['j', 'a', 'm', 'e', 's', 'h', 's', 'i', 'a', 'o']

    char.join(s)把字符串s每单个字符用char连接,返回的是字符串(s必须是可迭代的,不能是数字和布尔值)

    >>> s = 'AbCdEFbghEjKb'
    >>> '_'.join(s)
    'A_b_C_d_E_F_b_g_h_E_j_K_b'

    >>> L = ['james', 'tony', 'alex', 'emily']
    >>> '##'.join(L)                  # 列表转换成字符串
    'james##tony##alex##emily'

    
    
    
    

    #####is系列
    name='jinxin123'
    print(name.isalnum()) #字符串由字母或数字组成
    print(name.isalpha()) #字符串只由字母组成
    print(name.isdigit()) #字符串只由数字组成

    isdecimal()  # 如果字符串只包含十进制数字则返回True,否则返回False。
    isspace() # 如果字符串中只包含空格,则返回True,否则返回False。


    splitlines(([keepends])) # 按照‘ ’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行。
    partition(sub) # 找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’, ’’, ’’)

    zfill(width) # 返回长度为width的字符串,原字符串右对齐,前边用0填充。
    translate(table) # 根据table的规则(可以由str.maketrans(‘a’,‘b’)定制)转换字符串中的字符。
    casefold() # 把整个字符串的所有字符改为小写

     字符串格式化之format,{}

    通过位置参数
    
    In [1]: '{0},{1}'.format('kzc',18)
    Out[1]: 'kzc,18'
    In [2]: '{},{}'.format('kzc',18)
    Out[2]: 'kzc,18'
    In [3]: '{1},{0},{1}'.format('kzc',18)
    Out[3]: '18,kzc,18'
    
    
    
    关键字参数
    
    In [5]: '{name},{age}'.format(age=18,name='kzc')
    Out[5]: 'kzc,18'

    range(M:N:K)K为负数时,M>N

    for i in range(1,10):
        print(i)
    
    for i in range(1,10,2):  # 步长
        print(i)
    
    for i in range(10,1,-2): # 反向步长
        print(i)

     

     

  • 相关阅读:
    计算机视觉资源合集
    EMZ-搭建DL模型的最简便的方式 | 附项目地址
    在边缘设备上拟合大型神经网络的方法总结
    归一化方法总结 | 又名“BN和它的后浪们“
    名词解释 | 论文中的Ablation study
    知识蒸馏的简要概述
    如何看待计算机视觉未来的走向(二)从产品的角度聊一聊
    STL源码分析--functional
    STL源码分析--algorithm
    STL源码分析--bitset
  • 原文地址:https://www.cnblogs.com/james201133002/p/9080958.html
Copyright © 2011-2022 走看看