美文网首页
Python字符串类型

Python字符串类型

作者: 秋葵2022 | 来源:发表于2018-11-21 17:28 被阅读6次

    Python字符串类型

    1.创建

    s = 'Hello,man!How are you!'
    

    特性

    • 有序

    • 不可变

      不可变如何体现,看代码:

      a = 'blue'
      print(id(a))  # 输出结果 34390568
      a = 'pink'
      print(id(a))  # 输出结果 41910600
      

      当给a二次复制的时候,并未更改 'blue',而是重新开辟了内存空间存放 'pink'

    2.字符串方法

    如何进入到源码查看,随便写一个字符串方法,Ctrl + 鼠标左击,然后找到str 的方法,如下图

    image

    这是C语言写的,所以我们并不会看到python的真正源码是如何实现的,只能看到解释

    01 capitalize() 首字母大写,其他字母小写
    >>> a = 'Hello world'
    >>> a.capitalize()
    'Hello world'
    
    02 casefold() 全部转化为小写

    对于字符串比较的时候,可以全部转化为小写然后比较

    >>> a = 'Hello world'
    >>> a.casefold()
    'hello world'
    
    03 center() Return S centered in a string of length width. Padding isdone using the specified fill character (default is a space)
    >>> a
    'Hello world'
    >>> a.center(50,'*')
    '*******************Hello world********************'
    
    04 count() 计算包含多少个某字符
    >>> a = 'Hello world'
    >>> a.count('o')
    2
    >>> a.count('l',0,3) #从0到3,包含多少个 l, 区间[H,e,l,l)
    1
    
    05 endswith() 判断是不是以 什么 结尾,返回Boolean
    >>> a = 'Hello world!'
    >>> a.endswith('!')
    True
    >>> a.endswith('d!')
    True
    >>> a.endswith('d')
    False
    
    06 expandtabs() 增加tabs长度的
    >>> a = 'a\tb' #\t表示一个tab
    >>> print(a)
    a       b
    >>> a.expandtabs(20)
    'a                   b'
    
    07 find() 查找,找到返回index,找不到返回-1
    >>> a = 'Hello world!'
    >>> a.find('o') #从左到右,返回找到的first 目标原素就返回
    4
    >>> a.find('k')
    -1
    >>> a.find('l',0,4) 
    2
    
    08 format() 返回一个新字符串,不改变原字符串
    'I am {0},and I like {1}'
    >>> str.format('gudon','apple')
    'I am gudon,and I like apple'
    >>> print(str)
    I am {0},and I like {1}
    
    >>> str = 'I am {name},and I like {fruts}'
    >>> str.format(name='jack',fruts='orange')
    'I am jack,and I like orange'
    
    09 isdecimal() 法检查字符串是否只包含十进制字符 ,这种方法只存在于unicode对象。

    注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。

    >>> str = u'this2018'
    >>> str.isdecimal()
    False
    >>> str = u'2018'
    >>> str.isdecimal()
    True
    
    10 isdigit() 方法检测字符串是否只由数字组成。
    >>> '2018'.isdigit()
    True
    >>> 'hello'.isdigit()
    False
    
    11 isidentifier()判断是否为Python中的标识符
    >>> '33a'.isidentifier()
    False
    >>> '_name'.isidentifier()
    True
    
    12 islower() 判断是否都是小写 ,相对与 isupper()
    #islower()
    >>> '33abc'.islower()
    True
    >>> '33abDc'.islower()
    False
    # isupper()
    >>> 'ASD'.isupper()
    True
    >>> 'ASDaa'.isupper()
    False
    
    13 isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False
    str = u"this2009";  
    print str.isnumeric(); #False
    
    str = u"23443434";
    print str.isnumeric(); #True
    
    #对于 Unicode 数字、全角数字(双字节)、罗马数字和汉字数字会返回 True ,其他会返回 False。byte数字(单字节)无此方法。
    print u'123'.isnumeric() # True
    print u'Ⅷ'.isnumeric() # True
    print u'abc123'.isnumeric() # False
    print u'1.23'.isnumeric() # False
    >>> '五'.isnumeric() #True
    

    num = "1"  #unicode
    num.isdigit()   # True
    num.isdecimal() # True
    num.isnumeric() # True
    
    num = "1" # 全角
    num.isdigit()   # True
    num.isdecimal() # True
    num.isnumeric() # True
    
    num = b"1" # byte
    num.isdigit()   # True
    num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'
    num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'
    
    num = "IV" # 罗马数字
    num.isdigit()   # True
    num.isdecimal() # False
    num.isnumeric() # True
    
    num = "四" # 汉字
    num.isdigit()   # False
    num.isdecimal() # False
    num.isnumeric() # True
    

    14 join()
    >()>> names = ['gudon','jack','fesco']
    >>> names
    ['gudon', 'jack', 'fesco']
    >>> ''.join(names)
    'gudonjackfesco'
    >>> '+'.join(names)
    'gudon+jack+fesco'
    
    15 lower() and upper() 转换大小写
    >>> s.lower()
    'hello world'
    >>> s.upper()
    'HELLO WORLD'
    
    16 Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
    >>> s = 'Hello world'
    >>> s.ljust(50)
    'Hello world                                       '
    >>> s.ljust(50,'*')
    'Hello world***************************************'
    >>> s.ljust(5)
    'Hello world'
    
    17 strip() 去除空格等 ,lstrip()只去除左边 rstrip()只去除右边
    >>> s = '\n hello world     '
    >>> s
    '\n hello world     '
    >>> s.strip()
    'hello world'
    
    18 replace() 字符串替换
    >>> s = 'Hello world'
    >>> s.replace('l','L')
    'HeLLo worLd'
    >>> s.replace('l','L',2)
    'HeLLo world'
    
    19 partition() 根据传入的指定分隔符,返回一个3元的元祖,第一个为左边字符串,第二个为分隔符本身,第三个为分隔符右边字符串,对应的有 rpartition(),从右边开始分
    >>> s = 'www.fesco.com.cn'
    >>> s.partition('.')
    ('www', '.', 'fesco.com.cn')
    >>> s.rpartition('.')
    ('www.fesco.com', '.', 'cn')
    
    20 split() 通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 ,从右边开始分,rsplit()
    >>> str = 'this is an apple'
    >>> str.split() # 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
    ['this', 'is', 'an', 'apple']
    >>> str.split('a')
    ['this is ', 'n ', 'pple']
    >>> str.split('i',1)
    ['th', 's is an apple']
    
    21 startswith() and endswith()
    >>> str = 'Hello world!'
    >>> str.startswith('H')
    True
    >>> str.endswith('d!')
    True
    
    22 swapcase() 大小写切换,原来是大写,变成小写,原来是小写的,变成大写
    >>> str = 'Hello world!'
    >>> str.swapcase()
    'hELLO WORLD!'
    

    相关文章

      网友评论

          本文标题:Python字符串类型

          本文链接:https://www.haomeiwen.com/subject/hkgcqqtx.html