zoukankan      html  css  js  c++  java
  • Python学习笔记:第3天 字符串的操作

    1. python的数据类型

    int     整数
    str     字符串。一般不会用字符串保存大量的数据
    bool    布尔值:True和False
    list    可以存放大量的数据(可以任意的数据类型)
    dict    字典 =>  key: value  查找数据的速度快
    set     集合,特点:无序、不能重复
    bytes   字节数,程序能够处理
    tuple   元组:不可变的列表  
    

    2. int类型的操作

    bit_lenght() 计算这个数字二进制的长度

    • 二进制: 0和1,逢二进一
    • 八进制: 0到7,逢八进一
    • 十六进制: 0到F,逢十六进一
    In [1]: a = 12              # 12的二进制形式为:1100
    In [2]: a.bit_length()
    Out[2]: 4
    

    3. bool类型

    大部分对象都可以参与布尔运算:

    4. 字符串的操作

    字符串是Python中最常用的数据类型,我们可以使用引号(‘或”)来创建字符串。

    s1 = 'abc'
    s2 = "def"
    s3 = '''        # 三引号可以创建多行字符串
    aaaa
    bbbb
    '''
    

    4.1 索引和切片

    索引:索引就是下标,下标是从0开始的

    In [1]: s = '012345678'
                           
    In [2]: s[2]           
    Out[2]: '2'            
                           
    In [3]: s[-2]                     # 也可以使用负数从后面开始索引 
    Out[3]: '7'            
    

    切片

    使用方法:s1[startIndex:endIndex:step]

    • 从starIndex切片到endIndex,但是不包括endIndex
    • step参数为切片的步长,如果是正数则从左到右;如果是负数则从右到左(不写则默认为1)
    In [4]: s[4:]           # startIndex不填默认是切片到最后
    Out[4]: '45678'      
                         
    In [5]: s[::]           # startIndex和endIndex都不填默认是整个字符串        
    Out[5]: '012345678'  
                         
    In [6]: s[::-1]         # 如果step的值为负数的时是把整个字符顺序倒过来处理
    Out[6]: '876543210'  
                         
    In [7]: s[-1: -5]       # 如果step的值不填(默认为1),这样取不到想要的字符,从-1再往右已经没有字符了
    Out[7]: ''           
                         
    In [8]: s[-1: -5:-1]    # 把step的值设为-1后就可以从右往左切片
    Out[8]: '8765'       
                      
    In [9]: s[:-1]    
    Out[9]: '01234567'           
    
    In [11]: s[2::2]        # step设为2时,每隔2个取一个值
    Out[11]: '2468'
    
    In [12]: s[-2::-2]      # 设置为-2时,从后面往前面切片,每2个取一个
    Out[12]: '7531'
    

    4.2 字符串的相关操作方法

    切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的

    1. 字符串重要的几个方法

    upper()                         # 把字符串全部转换成大写
    lower()                         # 把字符串全部转换成小写
    strip([chars])                  # 去掉字符两边的空白字符,制表符	和回车符
    等,如果给了指定的参数xx,就去掉字符串两边的xx字符
    lstrip([chars])                 # 去掉左边指定的字符
    rstrip([chars])                 # 去掉右边指定的字符
    replace(old, new[, count])      # 用new字符替换掉old字符,count值没有指定默认时替换所有的字符
    split(sep=None, maxsplit=-1)    # 以指定的符号分割字符串,用于分割的字符不会在分割后的结果中,并且返回一个列表
    rsplit(sep=None, maxsplit=-1)   # 从右边起分割字符串,maxsplit可以指定最大分割次数
    lsplit(sep=None, maxsplit=-1)   # 从左边起开始分割
    index(sub[, start[, end]])      # 获取指定字符串第一次出现的位置(即索引),start和end可以指定范围,如果找不到会出ValueError的异常
    find(sub[, start[, end]])       # 跟index的作用一样,但当找不到结果时或返回-1而不会报错
    startswith(prefix[, start[, end]])  # 判断字符串是不是以指定的字符开头,返回的时布尔值True和False
    endswith((suffix[, start[, end]])   # 判断字符串是不是以指定的字符结尾
    
    In [1]: s = '__abCDef    '                                              
                                                                                    
    In [2]: s.upper()                           # 字符全部转换成大写                                                               
    Out[2]: '__ABCDEF    '                                                          
                                                                                    
    In [3]: s.lower()                           # 字符全部转换成大写                
    Out[3]: '__abcdef    '                                                          
                                                                                    
    In [4]: s.strip()                           # 默认是除去两边的空白字符                                                               
    Out[4]: '__abCDef'                                                              
                                                                                    
    In [5]: s.strip('_')                        # 可以指定删除字符两边指定的字符                                                            
    Out[5]: 'abCDef    '                                                            
                                                                                    
    In [6]: s.lstrip('_')                       # lstrip只删除左边指定的字符                                                           
    Out[6]: 'abCDef    '                                                            
                                                                                    
    In [7]: s.replace(' ', '-')                 # 查找对应的字符并替换成新的字符                                                     
    Out[7]: '__abCDef----'                                                                                                                 
                                                                                    
    In [10]: s.replace('_', '*', 1)             # 指定count参数可以设置要替换的次数,默认是全部替换                                                
    Out[10]: '*_abCDef    '                                                         
                                                                                    
    In [11]: s2 = '游戏abc篮球'                                                         
                                                                                    
    In [12]: s2.split('abc')                    # 以指定字符分割字符串,返回的数据类型是列表                                                        
    Out[12]: ['游戏', '篮球']                                                           
                                                                                    
    In [13]: s2.split('游戏abc篮球')            # 如果分割后为空字符也会返回一个列表,列表里面是2个空字符串元素
    Out[13]: ['', '']                                                               
                                                                                    
    In [14]: s2.index('篮球')                   # 查找对应字符串所在的索引位置                                                         
    Out[14]: 5                                                                      
                                                                                    
    In [15]: s2.index('d')                      # 找不到时会抛出ValueError异常                                                    
    ---------------------------------------------------------------------------     
    ValueError                                Traceback (most recent call last)     
    <ipython-input-15-46668276bfcb> in <module>                                     
    ----> 1 s2.index('d')                                                           
                                                                                    
    ValueError: substring not found                                                 
                                                                                    
    In [16]: s2.find('d')                       # 跟index一样查找字符所在的索引,但是找不到时会返回-1而不是报错                                              
    Out[16]: -1                                                                     
                                                                                    
    In [17]: s2.startswith('游戏')              # 判断字符串是否以‘游戏’开头,返回布尔值                                                    
    Out[17]: True                                                                   
                                                                                    
    In [18]: s2.endswith('篮球')                # 判断字符串是否以‘篮球结尾’                                                      
    Out[18]: True                                                                   
    

    2. 大小写转换

    capitalize()                    # 首字母大写
    swapcase()                      # 大小写互相转换
    title()                         # 每个被特殊字符隔开的字⺟⾸字⺟⼤写
    casefold()                      # 转换成⼩写,但是这个最所有的字符都有效(如东欧的等)
    

    3. 格式化输出

    使用字符串的format可以更直观的输出

    In [19]: print('我是{}来自{},我喜欢{}'.format('Jerry', '南方', '打篮球'))
    我是Jerry来自南方,我喜欢打篮球
    
    In [20]: print('我是{2}来自{0},我喜欢{1}'.format('Jerry', '南方', '打篮球'))
    我是打篮球来自Jerry,我喜欢南方
    
    In [21]: print('我是{name}来自{place},我喜欢{hobby}'.format(name='Jerry', hobby='打篮球', place='南方'))
    我是Jerry来自南方,我喜欢打篮球
    
    In [22]: print('{:5d}  {:2.3f}'.format(12, 12.143233234))       # 5d
       12  12.143
    # {:5d} 的意思是替换为5个字符宽度的整数,宽度不足则使用空格填充
    # {:7.3f}的意思是替换为为7个字符宽度的保留两位的小数,小数点也算一个宽度,宽度不足则使用空格填充。其中7指宽度为7,.2f指保留两位小数。
    

    4. 条件判断

    isalpha()               # 是否由字符组成
    isdigit()               # 是否由数字组成
    isalnum()               # 是否由数字和字符组成
    isdecimal()             # 是否由小数组成
    isnumeric()             # 是否由数字组成(中文形式的数字也能识别)
    

    5. 计算字符串的⻓度

    使用len可以计算字符串的长度

    len([数据]) # 使用len函数可以计算字符串,列表、元组和字典等也都可以使用

    6. 其他方法

    center(10, "*")                 # 拉⻓成10, 把原字符串放中间.其余位置补*
    count("a")                      # 查找"a"出现的次数 
    

    5. for循环

    使⽤for循环可以遍历(获取)字符串中的每⼀个字符,使用语法:

    for 变量 in 可迭代对象:
        循环语句
    

    可迭代对象:可以理解为能⼀个⼀个往外取值的对象

    使用while遍历一个字符串的方法:

    s = "⼤家好, 我是VUE, 前端的⼩朋友们. 你们好么?"
    index = 0
    while index < len(s19):
     print(s[index])          # 利⽤索引切⽚来完成字符的查找
     index = index + 1
    

    但是如果使用for循环:

    s = "⼤家好, 我是VUE, 前端的⼩朋友们. 你们好么?"
    for c in s19:
     print(c)
    
  • 相关阅读:
    [洛谷P1484] 种树
    Codeforces Round #505 Div. 1 + Div. 2
    [NOIp2015] 斗地主
    ☆ [NOIp2016] 天天爱跑步 「树上差分」
    [NOI2010] 超级钢琴
    [POI2000] 病毒
    [SCOI2010] 股票交易
    [NOI2002] 贪吃的九头龙
    [ZJOI2008] 骑士
    LeetCode 笔记系列 18 Maximal Rectangle [学以致用]
  • 原文地址:https://www.cnblogs.com/zpzhue1/p/9826777.html
Copyright © 2011-2022 走看看