zoukankan      html  css  js  c++  java
  • Pyhton基础篇(4)-基本数据类型-字符串详解(已更新)

    1、字符串

      字符串是Python最常用的一种数据类型,虽然看似简单,但能够以不同的方式来使用它们。

      字符串就是一系列的字符,在Python中,用引号括起来的都是字符串,其中的引号可以是单引号,也可以是双引号。如“name”、‘age’都可以称为字符串

    2、字符串的创建 

    1 "Python" 
    2 'Python'                //  这两种方式都称为字符串
    3  name="Python"         //一般在定义字符串的时候,都会给他赋值给一个变量

    3、字符串的常用功能(详细)

      以C开头的方法:

    name="czp"
    print(name.capitalize())     ##首字母变大写
    #----------------------------------------------------------------------------------
    print(name.casefold())    ##将字符串中出现的字母变为小写,很多未知的对相应变小写
    #---------------------------------------------------------------------------------- print(name.center(20)) ##字符串内容居中,左右宽度各为20 print(name.center(20,"*")) ##字符串内容居中,左右宽度各为20个“*”,后面的填充内容可随意更换 #---------------------------------------------------------------------------------- print(name.count("cd")) ##字符串子序列查询,如存在返回查询次数,不存在返回0,不会报错

      以D开头的方法:

    print(name.decode())        ##解码(这个在Python3中没有提示这个方法,但是大家需要知道,很重要)
    print(name.encode())        ##编码(针对unicode,先了解这两个,后面的博客会详细讲解)

      以E开头的方法:

    print(name.endswith("p"))     ##判断以什么结尾,返回值为布尔值
    name1="czp	123"
    print(name1)
    print(name1.expandtabs())     ##将制表符/t转换为空格,默认是8。参数写多少,就是将多少位分一段,将/t转换为空格填充
                       此方法可以用来绘制表格,如

      test = "username email password laiying ying@q.com 123 laiying ying@q.com 123 laiying ying@q.com 123"
      v = test.expandtabs(20)
      print(v)

      以F开头的方法:

    print(name.find("c"))           ##查找是否包含子字符串,如果有,返回索引位置,否则返回-1
    #----------------------------------------------------------------------------------
    name1="my name is {name}"
    print(name1.format(name="czp"))      ##字符串格式化,通过format方法给变量传值并输出
    #----------------------------------------------------------------------------------
    print(name1.format_map({"name":"czp"}))  ##字符串格式化,与format方法不同的是赋值的方式不同

          以I开头的方法:

    name="czp"
    #print(name.index("c"))              ##查找子序列的下标,如果不存在,程序会报错
    #------------------------------------------------------------------------------------
    print(name.isdigit())               ##判断字符串是否是数字,返回值为布尔值
    #------------------------------------------------------------------------------------
    print(name.isalnum())              ##判断字符串是否是数字和字母,返回值为布尔值
    #------------------------------------------------------------------------------------
    print(name.isalpha())               ##判断字符串是否是字母,必须全为字母2,才会返回True
    #------------------------------------------------------------------------------------
    print(name.isdecimal())             ##判断字符串是否只包含十进制字符。这种方法只存在于unicode对象。
    #----------------------------------------------------------------------------------------
    print(name.isidentifier())          ##判断字符串是否已字幕开头
    #----------------------------------------------------------------------------------------
    print(name.islower())               ##判断字符串是否小写
    #----------------------------------------------------------------------------------------
    print(name.isnumeric())             ##判断字符串是否只是以数字组成
    #----------------------------------------------------------------------------------------
    print(name.isprintable())           ##判断字符串中所有字符是否都属于可见字符,如有	,
    等,肯定会返回false
    #-----------------------------------------------------------------------------------------
    print(name.isspace())               ##判断字符串是否为空格(空值、字符串间的空格,都为False)
    #-----------------------------------------------------------------------------------------
    print(name.istitle())               ##判断字符串是否为标题,即是否首字母大写
    #-----------------------------------------------------------------------------------------
    print(name.isupper())               ##判断字符串是否为大写,返回布尔值

      以J开头的方法

    name="czp"
    print(" ".join(name))                   ##序列中的元素以指定的字符连接生成一个新的字符串。

      以L开头的方法:

    name=" czp"
    print(name.ljust(20,"*"))               ##返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
    #---------------------------------------------------------------------------------------------
    print(name.lower())                     #将字符串中的字母全部变为小写
    #----------------------------------------------------------------------------------------------
    print(name.lstrip())                    #去除字符串左边开头的空格

      以P开头的方法:

    name="czp"
    print(name.partition("c"))                 ##分割前、中、后三个部分,通过写入指定的字符串子序列

      以R开头的方法:

    name="czp"
    print(name.rstrip())                        #去除字符串左边开头的空格
    #---------------------------------------------------------------------------------------------
    print(name.replace("c","z"))                #替换字符串中的子序列
    #-------------------------------------------------------------------------------------------
    print(name.rfind("p"))                      #返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。
    #-------------------------------------------------------------------------------------------
    print(name.rindex("c"))                     #返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常
    #--------------------------------------------------------------------------------------------
    print(name.rjust(20,"0"))                   #返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
    #---------------------------------------------------------------------------------------------

      以S开头的方法:

    name="c z p"
    print(name.strip())                            #移除字符串头尾指定的字符(默认为空格)。
    #-------------------------------------------------------------------------------------------------
    print(name.split(" ",2))                       #指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
    #-------------------------------------------------------------------------------------------------
    print(name.splitlines())                        #根据换行分割”
    “
    #--------------------------------------------------------------------------------------------------
    print(name.startswith("c"))                     #判断字符串以什么开头,返回布尔值
    #-------------------------------------------------------------------------------------------------
    print(name.swapcase())                          #对字符串的大小写字母进行转换

      其他的方法:

    print(name.title())                                #将首字母大写
    print(name.upper())                                #将字符串中的字母改为大写
    #--------------------------------------------------------------------------------------------------
    print(name.zfill(20)) #返回指定长度的字符串,原字符串右对齐,前面填充0。
     

      重点:深浅copy(面试中经常问道)

      在python中,变量是一个系统的元素,拥有指向对象的连接的空间

      对象是系统分配出来的一块内存地址,存储其所代表的值

      引用是从变量指向对象的一个指针,在python中不可变对象是指:字符串、数字、元组

      可变对象是指:列表和字典。

    1 s1 = [1,2,3,4]    #s1变量指向的是一个可变对象:列表
    2 s2 = s1           #将s1的值赋值给s2,s1、s2共享同一个列表对象[1,2,3,4]
    3 print(id(s1),id(s2))   #此时的s1和s2的id是一样的
    4 s1[0] = 0         #通过索引的方式修改s1列表中的第一个元素
    5 print(s1,s2)      #s1、s2的值都改变了,因为对象的本身值发生了改变

      如果不想修改s1的值的时候s2的值也发生改变,可以通过切片或copy方法

    1 s1 = [1,2,3,4]
    2 s2 = s1[:]
    3 print(id(s1),id(s2))    #通过切片的方式赋值,对象也发生了改变
    4 s1[0] = 0
    5 print(s1,s2)

      切片技术应用于所有的序列:列表、字符串、元组

      但切片不用应用于字典,对字典只能使用copy()或deepcopy()方法

      深浅拷贝,即可用于序列,也可用于字典

    1  import copy
    2  X = copy.copy(Y)      #浅拷贝:只拷贝顶级的对象,或者说:父级对象
    3  X = copy.deepcopy(Y)  #深拷贝:拷贝所有对象,顶级对象及其嵌套对象。或者说:父级对象及其子对象

      深浅拷贝都是对源对象的复制,占用不同的内存空间

      如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象

      如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝

      序列对象的切片其实是浅拷贝,即只拷贝顶级的对象

    4、数字

      在编程中,经常使用数字来记录游戏得分、表示可视化数据等,Python根据数字的用法以不同的方式来处理它们

      在Python中,可对整数执行加(+)、减(-)、乘(*)、除(/)等运算,具体运算请参考上一篇博文

    5、布尔值

      真或假(1 或 0)

      注:此篇文章并没有讲解内置方法,会在后面的博客中写出,感兴趣的可以关注一下,谢谢。

  • 相关阅读:
    python+opencv实现图像缩放
    vim 常用指令-持续更新
    python实现简单的SVM
    linux查看当前目录下,各文件夹大小
    python解析json文件信息到csv中
    根据小图文件名在原图画框
    BZOJ1079: [SCOI2008]着色方案 (记忆化搜索)
    BZOJ1044: [HAOI2008]木棍分割 (二分 + DP)
    gym100825G. Tray Bien(轮廓线DP)
    BZOJ1237: [SCOI2008]配对
  • 原文地址:https://www.cnblogs.com/Chen-Zhipeng/p/7724715.html
Copyright © 2011-2022 走看看