编程语言
首页 > 编程语言> > 《每天五分钟冲击python基础之字符串基础入门》(五)(重点)

《每天五分钟冲击python基础之字符串基础入门》(五)(重点)

作者:互联网

## 前言 上节课已经教大家学会了如何注释和如何使用注释来测试代码了,那么今节课就先学字符串的入门,那你们肯定会问,为什么不先教其他的变量类型(例如:数值类型:整型、浮点型、复数,运算符:算术运算符、位运算符)那些的,因为以我过往开发的经验,字符串类型是写代码的时候,经常用到,所以先将这部分抽出来先讲,其他的部分,后面再一 一讲解。 ## 入门字符串前先学会定义变量 1、变量是什么呢? 变量就像一个个小小的容器,主要是用来保存数据的。 2、变量和常量有什么区别 常量一旦保存某个数据之后,该数据就不能发生改变;但变量保存的数据则可以多次发生改变,只要程序对变量重新赋值即可。 怎么理解上面这句话呢?举例说明:比如你去买杂货店买东西,椰树牌的香烟,10年一直以来的价格都是3块的,那么这个就是常量,那么芙蓉王的价格,可能3年前就25块,1年前就30块,现在买就35块,那么这个就是变量。 3、怎么定义变量 Python使用等号(=)作为赋值运算符,例如 a = 20 就是一条赋值语句,这条语句用于将20装入变量a中-------这个过程就被称为赋值:将20赋值给变量a 例: ```python a = 20 ``` 4、定义常量 ```python import constant constant.VALUE = 5 ``` ## 字符串是什么 字符串的意思就是“一串字符”,比如“Hello,Virus”是一个字符串,“How are you?”也是一个字符串。Python要求字符串必须使用引号括起来,使用单引号也行,使用双引号也行---------只要两边的引号能配对即可。 例: ```python a = "Hello,Virus" b = 'How are you?' ``` ## 转义字符 适用情况:当字符串中出现多个单引号或者双引号的情况下,或者进行换行,空格等情况下,可以使用转义字符 情况1:多个单引号或者双引号 例: ```python str3 = 'I 'm a coder' print(str3) 输出结果: File "D:\Sublime Text 3\Data\Packages\User\a.py", line 1 str3 = 'I 'm a coder' ^ SyntaxError: invalid syntax ``` 解决方法1: ```python str3 = 'I \'m a coder' # \ 代表转义 print(str3) 输出结果: I 'm a coder ``` 解决方法2: ```python str3 = "I 'm a coder" # 双引号包单引号 print(str3) 输出结果: I 'm a coder ``` 转义字符说明 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210531111723896.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpcnVzc3M=,size_16,color_FFFFFF,t_70) 下面简单列举几个: \n ```python s = 'Hello\nCharlie\nGood\nMorning' print(s) 输出结果: Hello Charlie Good Morning ``` \t ```python s2 = '商品名\t\t单价\t\t数量\t\t总价' print(s2) 输出结果: 商品名 单价 数量 总价 ``` ## 拼接字符串 python使用加号(+)作为字符串的拼接运算符,例: ```python s2 = "Hello," s3 = "Charlie" print(s2+s3) 输出结果: Hello,Charlie ``` 如果直接将两个字符串紧挨着写在一起,python就会自动拼接它们,例: ```python s1 = "Hello," 'Charlie' print(s1) 输出结果: Hello,Charlie ``` 注意:python不允许直接拼接数值和字符串,程序必须先将数值转换为字符串,使用repr()函数进行转换 例: ```python s1 = "这件衣服的价格是:" price = 90 print(s1+price) 输出结果 Traceback (most recent call last): File "D:\Sublime Text 3\Data\Packages\User\a.py", line 3, in print(s1+price) TypeError: can only concatenate str (not "int") to str ``` 解决: ```python s1 = "这件衣服的价格是:" price = 90 print(s1 + repr(price)) 输出结果: 这件衣服的价格是:90 ``` ## 原始字符串 由于字符串中的反斜线都有特殊的作用,因此当字符串中包含反斜线时,就需要对其进行转义。比如写一条Windows的路径:G:\publish\codes\02\2.4,如果在python程序中直接这样写肯定是不行的,那么可以怎么办呢,可以借助于原始字符串来解决这个问题。 原始字符串以“r”开头 例: ```python s1 = r'G:\publish\codes\02\2.4' print(s1) 输出结果: G:\publish\codes\02\2.4 ``` ## 长字符串 前面介绍python多行注释时提到使用三个引号(单引号、双引号都行)来包含多行注释内容,其实这是长字符串的写法,只是由于在长字符串中可以放置任何内容,包括放置单引号、双引号都可以,如果所定义的长字符串没有赋值给任何变量,那么这个字符串就相当于被解释器忽略了,也就相当于注释掉了。 简单概括一下就是如果三个引号(单引号、双引号没有赋值给变量的话,就相当于注释,反之赋值给变量了就是长字符串了) 例: ```python s = '''"What your name?" "I am Virus,and you" "I am lihui"''' print(s) 输出结果: "What your name?" "I am Virus,and you" "I am lihui" ``` ## 字节串(bytes)(这个了解一下就可以了,本人在开发中,也只是在处理某些图片上用到) python3新增了bytes类型,用于代表字符串(这是作者生造的一个词,与字符串对应)。字符串(str)由多个字符组成,以字符为单位进行操作;字节串(bytes)由多个字节组成,以字节为单位进行操作。 bytes和str除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes也是不可变序列。 bytes对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串可以转换为字节串;反过来,字节串也可以恢复成对应的字符串。 由于bytes保存的就是原始的字节(二进制格式)数据,因此bytes对象可用于在网络上传输数据,也可以用于存储各种二进制格式的文件,不如图片、音乐等文件。 如果希望将一个字符串转换成bytes对象,有如下三种方式: 1、如果字符串内容都是ASCII字符,则可以通过直接在字符串之前添加 b 来构建字节串值 2、调用bytes()函数(其实是bytes的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。 3、调用字符串本身的encode()方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。 例: ```python #定义字节串 b3 = b'hello' b4 = bytes('我爱学习',encoding='utf-8') b5 = '我爱学习'.encode('utf-8') #对字节串变成字符串 b6 = b5.decode('utf-8') print(b3) print(b4) print(b5) print(b6) 输出结果 b'hello' b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0' b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0' 我爱学习 ``` ## 课外知识补充 在这里简单介绍一下字符集的概念。计算机底层并不能保存字符,但程序总是需要保存各种字符的,那该怎么办呢?计算机“科学家” 就想了一个办法:为每个字符编号,当程序要保存字符时,实际上保存的实该字符的编号;当程序读取字符时,读取的其实也是编号,接下来要去查“编号-字符对应表”(简称码表)才能得到实际的字符。因此,所谓的字符集,就是所有字符的编号组成的总和,早期美国人给英文字符、数字、标点符号等字符进行了编号,他们认为所有字符加起来顶多100多个,只要1字节(8位,支持256个字符编号)即可为所有字符编号------这就是ASCII字符集。后来,亚洲国家纷纷为本国文字进行编号-----------即制订本国的字符集,但这些字符集并不兼容。于是美国人又为世界上所有书面语言的字符进行了统一编号,这次他们用了两个字节(16位,支持65536个字符编号),这就是Unicode字符集。实际使用的UTF-8、UTF-16等其实都属于Unicode字符集。 由于不同人对字符的编号完全可以很随意,比如同一个“爱” 字,我可以为其编号为99,你可以为其编号为199,所以同一个编号在不同的字符集中代表的字符完全有可能是不同的。因此,对于同一个字符串,如果采用不同的字符集来生成bytes对象,就会得到不同的bytes对象。 ## 结语 今节课的内容有点多,希望你们能细心地阅读,并且慢慢地在编辑器上进行练习,不要只看不练,那样对你的学习是一点帮助都没有的,只有多看多练,基础才能打得牢固,才能上手快,好了,今节课的内容就讲到这里,如果在学习的过程中,遇到任何问题,扫描下面图片关注,联系作者,就可以帮你解决了,下节课讲字符串深入学习,敬请期待喔! ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210531150936431.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpcnVzc3M=,size_16,color_FFFFFF,t_70#pic_center)

标签:字符,python,字符集,基础,print,五分钟,字符串,bytes
来源: https://blog.51cto.com/u_15257059/2956741