• python之字符串


    字符串与文本操作

    字符串:

    • Python 2和Python 3最大的差别就在于字符串

    • Python 2中字符串是byte的有序序列

    • Python 3中字符串是unicode的有序序列

    • 字符串是不可变的

    • 字符串支持下标与切片

    # 证明字符串支持切片和下标
    In [40]: s = 'hello world!'
    
    In [41]: s[0]
    Out[41]: 'h'
    
    In [42]: s[0:3]
    Out[42]: 'hel'
    
    In [43]: s[::-1]
    Out[43]: '!dlrow olleh'
    
    # 证明字符串是不可变类型
    In [44]: s[0] = 'L'
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-44-887f788ca844> in <module>()
    ----> 1 s[0] = 'L'
    
    TypeError: 'str' object does not support item assignment

    字符串格式化(两种方式)

    • Python字符串支持两种方式格式化

    • print style format

    • format方法

    print style format

    template % tuple (1)
    template % dict (2)
    template 为带有一些标记的字符串,使用 tuple 中的元素一次填充 template 为带有一些标记的字符串,使用 dict 中的values按key填充

    template 的一般格式:

    % (key) flag conversion (1) (2) (3) (4)
    % 开始
    
    1.可选的 (key) 如果指定了key, 将从字典中获取对应的value, 否则根据位置从元组中获取
    2.可选的 flag
    3.必选的 conversion

    实例:

    In [45]: 'I love %s' % ('Python', )
    Out[45]: 'I love Python'
    
    In [46]: 'I love %(name)s' % {'name': 'Python'}
    Out[46]: 'I love Python'
    
    In [47]: 'I love %s, %s is my first lang' % ('Python', 'PY')
    Out[47]: 'I love Python, PY is my first lang'

    flag

    Flag说明实例

    #

    此处 # 代表一个数字,指定宽度,如果宽度不够,会更具以下的规则填充

    '%3s' % ('a', ) → '••a'

    0

    使用0填充,仅适用于数字

    '%03d' % (1,) → '001'

    使用空格填充,默认行为

    ’%•3d' % (1,) ` → '••1'

    flag

    Flag说明实例

    -

    右边使用空格填充

    '%-3d' % (1,) → '1••'

    +

    填充之前增加`+` 仅对于正数

    '%+03d' % (1, ) → '+01'

    Conversion

    符号说明符号说明

    d

    整数

    i

    整数

    o

    八进制整数

    u

    整数,已废弃

    x

    小写十六进制整数

    X

    大写十六进制整数

    f

    浮点数

    F

    浮点数

    e

    小写科学计数法

    E

    大写科学计数法

    Conversion

    符号说明符号说明

    g

    同f, 如果指数小于-4,同e

    G

    同f, 如果指数小于-4,同E

    c

    字符,接收unicode编码或单字符字符串

    a

    字符串,使用 ascii 函数转换

    r

    字符串,使用 repr 函数转换

    format函数

    template.format(*args, **kwargs) (1) (2) (3) (4)
    1. template 使用 {} 标示变量

    2. {} 或 {d+} 使用 *args 按顺序填充

    3. {key} 使用 **kwargs 按key填充

    4. Format String Syntax

    In [48]: d = {'a':1, 'b': 2, 'c':3}
    
    In [49]: for k,v in d.items():
       ....:     print('key/value : {0} ==> {1}'.format(k,v))
       ....:     
    key/value : b ==> 2
    key/value : a ==> 1
    key/value : c ==> 3

    字符串常用操作

    • 字符串连接 join

    In [50]: lista =['I', 'love', 'Python']
    
    In [51]: ' '.join(lista)
    Out[51]: 'I love Python'
    • 字符串分割 splitrsplitsplitlinespartitionrpartition

    In [53]: s.split(':',1)
    Out[53]: ['root', 'x:0:0:root:/root:/bin/bash']
    • 字符串修改-大小写 capitalizetitlelowerupperswapcase

    # 此行第一个首字母大写
    In [58]: s.capitalize()
    Out[58]: 'I love python'
    # 每个单词的首字母大写
    In [59]: s.title()
    Out[59]: 'I Love Python'
    # 全部转化为小写
    In [60]: s.lower()
    Out[60]: 'i love python'
    # 全部转化为大写
    In [61]: s.upper()
    Out[61]: 'I LOVE PYTHON
    # 大小写互换
    In [63]: s = 'i Love Python'
    In [64]: s.swapcase()
    Out[64]: 'I lOVE pYTHON'
    • 字符串修改-填充清除 centerljustrjustzfillstriprstriplstrip

    # center 填充,一般用在格式化输出
    In [65]: s = 'Python'
    In [67]: s.center(20,'-')
    Out[67]: '-------Python-------'
    
    # 去掉换行符strip()
    In [68]: s = 'abc
    '
    
    In [69]: s.strip()
    Out[69]: 'abc'
    • 字符串判断 startswithendswithis*

    In [81]: s = 'abcdefg'
    # 字符串是以a开头
    In [83]: s.startswith('a')
    Out[83]: True
    
    In [84]: if s.startswith('a'):
       ....:     print('ok')
       ....:     
    ok
    # 是以g为结尾的.
    In [85]: if s.endswith('g'):  
        print('ok')
       ....:     
    ok
    • 字符串查找替换 countfind, rfindindexrindex,replace

    s = 'root:x:0:0:root:/root:/bin/bash
    '
    # count统计个数
    In [103] : s.count('root')
    Out[103] : 3
    In [87]: s = 'root:x:0:0:root:/root:/bin/bash
    '
    
    # replace进行替换,可以指定替换次数.
    In [88]:  s.replace('root', 'admin', 1)
    Out[88]: 'admin:x:0:0:root:/root:/bin/bash
    '

    str与bytes

    • Python3中严格区分了文本和二进制数据

    • Python2并没有严格区分

    • 文本数据使用str类型,底层实现是unicode

    • 二进制数据使用bytes类型,底层是byte

    • str使用encode方法转化为bytes

    • bytes方法使用decode方法转化为str

    • 由于清晰的区分文本和二进制,Python3解决了大多数Python2的编码问题

  • 相关阅读:
    background image position问题
    yii 验证器和验证码
    laravel 模板 blade
    tbody添加垂直滚动条
    转:jquery选择器总结
    jquery ajax传递数组给php
    jquery serialize()、serializearray()已经$.param方法
    php stdClass Object 问题
    Codeforces Round #274 (Div. 2) E. Riding in a Lift(DP)
    HTTP协议具体解释
  • 原文地址:https://www.cnblogs.com/topicjie/p/5223869.html
Copyright © 2020-2023  润新知