1、字符串

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

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

2、字符串的创建 

 "Python"
'Python' // 这两种方式都称为字符串
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\t123"
print(name1)
print(name1.expandtabs()) ##将制表符/t转换为空格,默认是8。参数写多少,就是将多少位分一段,将/t转换为空格填充
                   此方法可以用来绘制表格,如

test = "username\temail\tpassword\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123"
  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()) ##判断字符串中所有字符是否都属于可见字符,如有\t,\n等,肯定会返回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,"")) #返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
#---------------------------------------------------------------------------------------------

  以S开头的方法:

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

  其他的方法:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4、数字

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

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

5、布尔值

  真或假(1 或 0)

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

Pyhton编程(四)之基本数据类型-字符串详解的更多相关文章

  1. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  2. Python变量和字符串详解

    Python变量和字符串详解 几个月前,我开始学习个人形象管理,从发型.妆容.服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣 ...

  3. python数据类型及其详解

    一.数据类型介绍 1.字符串(string) 三种类型:单引号,双引号,三引号 a = 'jam' b = "JamHsiao" c = '''JAMHSIAO''' print( ...

  4. MariaDB(MySQL)创建、删除、选择及数据类型使用详解

    一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行 ...

  5. C语言中字符串详解

    C语言中字符串详解 字符串时是C语言中非常重要的部分,我们从字符串的性质和字符串的创建.程序中字符串的输入输出和字符串的操作来对字符串进行详细的解析. 什么是字符串? C语言本身没有内置的字符串类型, ...

  6. 【面试题】JS第七种数据类型Symbol详解

    JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...

  7. SQL Server日期时间格式转换字符串详解

    本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...

  8. Swift_字符串详解(String)

    Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...

  9. MS SQL Server 数据库连接字符串详解

    MS SQL Server 数据库连接字符串详解 原地址:http://blog.csdn.net/jhhja/article/details/6096565 问题 : 超时时间已到.在从池中获取连接 ...

随机推荐

  1. Java第十三周总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  2. 201521123057 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  3. logback:logback和slf4j中的:appender、logger、encoder、layout

    (1)appender 1.appender标签是logback配置文件中重要的组件之一.在logback配置文件中使用appender标签进行定义.可 以包含0个或多个appender标签. 2.a ...

  4. JDBC操作数据库之连接数据库

    通过JDBC向数据库中添加数据的时候,使用insert语句实现数据的插入,再SQL语句中的参数可以用占位符"?"来替代,然后通过PreparedStatement对象或者State ...

  5. JVM菜鸟进阶高手之路五

    转载请注明原创出处,谢谢! 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察 ...

  6. WebSocket部署服务器外网无法连接解决方案

    首先要说的是我遇见的问题: WebSocket connection to 'ws://www.xxxx.com/xxx/xx' failed: Error during WebSocket hand ...

  7. Hive基础(5)---内部表 外部表 临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  8. 1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏

    1289 大鱼吃小鱼 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右 ...

  9. 【NOIP】OpenJudge - 15-02:财务管理

    #include<stdio.h>//财务管理 int main() { ]={},sum=,ave=; ;i<=;i++) { scanf("%f",& ...

  10. ASP.NET没有魔法——ASP.NET MVC 与数据库之EF实体类与数据库结构

    大家都知道在关系型数据库中每张表的每个字段都会有自己的属性,如:数据类型.长度.是否为空.主外键.索引以及表与表之间的关系.但对于C#编写的类来说,它的属性只有一个数据类型和类与类之间的关系,但是在M ...