美文网首页
python基础-字符串(2)

python基础-字符串(2)

作者: 0893051f5f11 | 来源:发表于2018-07-16 22:16 被阅读0次

    这篇内容主要是作者对字符串进行理解总结

    1. Python语言中的字符串有两大特点:

    • 字符串是不可变的。
    • 字符串是字符有序的集合。

    1.1字符串的不可变性:

    • eg:将hello 变为Hello:
    s='hello'
    s[0] = 'H'
    

    结果报错:TypeError: 'str' object does not support item assignment

    应该运行如下:

    s='hello'
    # s[0] = 'H' 
    s = 'H' + s[1:] 
    print(s)
    

    因为Python字符串是不可变对象,所以对字符串操作的时候会得到一个新的字符串,新的字符串会占用一块独立的内存。
    所以在编写程序的时候尽量避免产生过多的中间结果。中间结果越多,程序的性能就越差。牢记字符串的不可变性。

    1.2有序的集合:

    字符串是有序的集合,可以通过分片和索引的方式定位与截取。对于分片操作来说,是索引操作的延伸。
    需要注意,在Python中分片和索引可以应用于任何有序集合(字符串、列表和元组)。
    为了代码可读性,尽量不要同时指定分片的开始、结束、步长,也不要使用负数的。

    2.字符串函数

    2.1 in 判断子字符串是否存在

    >>> s='hello'
    >>> 's' in s
    False
    >>> 'o' in s
    True
    >>> 'he' in s
    True
    

    2.2 大小写相关转化方法

    >>> s='Hello python!'
    >>> s.upper()      #转换为大写
    'HELLO PYTHON!'
    >>> s.lower()    #转换为小写 
    'hello python!'
    >>> s.capitalize()  #转换为首字母大写
    'Hello python!'
    >>> s.swapcase()    #将大小写交换
    'hELLO PYTHON!'
    

    2.3 startswith和endswith

    分别用来判断,参数是否存在于字符串的前缀或者后缀。

    • eg.找出当前目录的Python文件:
    1. 在某个目录下打开cmd,输入idle:
      C:\Users******> idle

    2.引用os包,遍历所有文件,并判断出Python文件:

    >>> import os
    >>> [ item for item in os.listdir() if item.endswith('.py')]
    ['click_package.py', 'sys.argv.py']
    

    前缀和后缀的判断常常用于查找相同文件类型,以及数据库日志中具有相同前缀但以不同日期结尾的文件。

    2.4 find 查找类函数

    >>> s = 'Hello python!'
    >>> s.find('l')
    2       # 第一个l出现的位置
    >>> s.find('o',5)    # 指定从顺序5以后的字符中查找0
    10    # 返回0的位置
    >>> s.find('haha')
    -1     # 查找为空时,返回-1,表示一次情况
    

    注意:
    find查找与in判断的区别:
    find查找不到时,返回-1;in判断结果为Ture or False

    2.5 字符串的操作

    由于字符串的不可变性,以下函数作用后,生成新的对象,而不是对原来的对象修改,需要重新指定变量。

    2.5.1 join 用于连接字符串或者列表

    >>> '+'.join('Hello python!')
    'H+e+l+l+o+ +p+y+t+h+o+n+!'
    

    join函数对前面的分隔符没有要求,可以使用空字符。任何字符都可以插入到字符串中。
    join函数中传入参数不仅仅限于字符串,任何可迭代的对象都可以作为参数传入(列表元组等)。最终生成巨大的字符串。
    join函数用处很广,涉及类型转换及文件名拼接等都会用到它。

    >>> '..'.join(('hello','python'))    #元组作为参数传入
    'hello..python'   
    

    2.5.2 split 用于拆分字符串,拆分后生成列表

    >>> s = 'sys.argv.py'
    >>> s.split('.')          #以.为分隔符进行拆分
    ['sys', 'argv', 'py']
    

    如果不传参数,默认按空白字符进行拆分。

    2.5.3 strip 用于去掉字符串两边的空白符

    >>> s = ' \tHello, \tWorld \n'
    >>> s.strip()
    'Hello, \tWorld'      # 中间的空白字符及空格不受影响
    

    只能从两边开始去除字符,去除时,并不是按照参数顺序

    >>> a=s.strip()
    >>> a.strip('Hold')
    'ello, \tWor'              #字符o,不位于字符串两边,所以无法去除
    

    2.6 字符串格式化

    这是一种更高级的方法来组合字符串。
    一般有两种方法:%表达式和format函数

    2.6.1% 表达式

    用于格式化字符串操作,控制字符串的呈现格式

    2.6.1.1 浮点数

    >>> '%f' % 15.26546546
    '15.265465'  # %f 保留小数点后面六位有效数字
    >>> ' %(price)f' % {'price': 15.26546546}
    ' 15.265465'  # (price)这是指定引用名称
    >>> '价格是:%(price)f' % {'price': 15.26546546}
    '价格是:15.265465'  # 可以直接添加字符串,形成新的语句
    >>> '价格是:%(price).2f' % {'price': 15.26546546}
    '价格是:15.27'     #.2f 表示保留两位小数
    

    2.6.1.2 整数

    >>> '%d' % 20
    '20'       # %d 输出十进制
    >>> '%o' % 20
    '24'       # %o 输出八进制
    >>> '%x' % 20
    '14'      # %x 输出十六进制
    

    2.6.1.2 字符串

    >>> '%s' % 'hello world'
    'hello world'          # %s 表示取字符串
    >>> '%.5s' % 'hello world'
    'hello'                 # %.5s 表示截取5位字符串
    

    2.6.2 format函数

    它通过{}和:来代替%

    2.6.2.1 定位

    >>> 'welcome to {} {} _python'.format('hello','world')
    'welcome to hello world _python'  
    # {} 依次传递参数至{}
    >>> 'welcome to {1} {0} _python'.format('hello','world')
    'welcome to world hello _python'  
    # {} 按下标的方式传递
    >>> 'welcome to {1} {0} _python {1} {1}'.format('hello','world')
    'welcome to world hello _python world world'
    # {} 一个参数可以多次使用
    

    2.6.2.2 格式

    >>> '{:.2f}'.format(3.1415926)
    '3.14'
    >>> '{1:^10.2f}'.format(3.1415926,5.555555)
    '   5.56   '
    # ^表示居中;10代表字符长度;.2f表示双精度浮点型数字
    
    微信关注.png

    相关文章

      网友评论

          本文标题:python基础-字符串(2)

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