前言
从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。
- 第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目
- 第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。
基本概念
- 字符串时候Python中最常见的数据类型,通过引号间包含字符串的方式就可以创建一个字符串数据,因为python中没有字符这个数据类型,所以单引号和双引号的作用是一样的,但是要保证引号不能混用。
- 字符串在python中是不可变类型,也即是说要改变字符串的元素需要新建一个新的字符串
- 字符串是由独立的字符组成的,这些字符可以通过切片操作顺序的访问
- 在Python3的字符串使用Unicode,直接支持多语言。牢记仅使用UTF-8编码
基本操作
字符串的创建和赋值
创建字符串非常的简单,可以直接用引号包裹,也可以用str()工厂方法创建
In [1]: a="hello world" # 双引号创建
In [2]: print(a)
hello world
In [3]: b='hello python' # 单引号创建
In [4]: print(b)
hello python
In [9]: s = str([1,2,3,4]) # str()方法创建
In [10]: s
Out[10]: '[1, 2, 3, 4]'
访问字符串的值
用方括号加一个或者多于一个索引的方式来获得字符
In [11]: a="hello world"
In [12]: a
Out[12]: 'hello world'
In [13]: a[0]
Out[13]: 'h'
In [14]: a[1:5]
Out[14]: 'ello'
In [15]: a[6:]
Out[15]: 'world'
修改字符串
前面说了字符串是不可修改的序列数据类型,要想修改字符串需要新创建新的变量,也就是说需要在内存中开辟新的内存空间来存储变量,新变量的名字可以和原来变量名字一样,也可以不一样
In [16]: a="hello world"
In [18]: a = a[:6] + 'python' # 将world 修改为 python
In [19]: a
Out[19]: 'hello python'
删除字符串中的字符&&删除字符串
字符串不可改变,同样不能被删除,如果想删除其中一个字符,只能提取出字符串中需要的部分,赋值给新的字符串,
删除整个字符串的操作可以通过给字符串赋空值或者del语句来操作,del语句会将变量在内存中删除,在大多数操作中没有必要用del语句来操作,python也有垃圾回收机制,在程序代码运行结束时,会自动释放内存
In [20]: a
Out[20]: 'hello python'
In [21]: a=a[:4] + a[5:] # 删除字符
In [22]: a
Out[22]: 'hell python'
In [25]: a='' # 给变量赋于空字符串
In [26]: a
Out[26]: ''
In [27]: del a # del语句删除a变量,再想查看a的值的时候就会报错了,因为从内存中已经删除
In [28]: a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-28-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
字符串和操作赋
序列操作符切片
我们以字符串demoSring='abcd'为例子进行演示
以下表格,
第一行:正索引
第二行:字符串中的各个字符
第三行:负索引
0 | 1 | 2 | 3 |
---|---|---|---|
a | b | c | d |
-4 | -3 | -2 | -1 |
- 正向索引演示
In [29]: demoSring='abcd'
In [30]: len(demoSring) # 计算字符串的长度
Out[30]: 4
In [31]: demoSring[0]
Out[31]: 'a'
In [32]: demoSring[1]
Out[32]: 'b'
In [33]: demoSring[0:2] # 含头不含尾,包含第0个元素,不包含第2个元素
Out[33]: 'ab'
- 反向索引
In [34]: -len(demoSring)
Out[34]: -4
In [35]: demoSring[-1]
Out[35]: 'd'
In [36]: demoSring[-2]
Out[36]: 'c'
In [37]: demoSring[-4:-1]
Out[37]: 'abc'
切片操作,记住一句话就是含头不含尾
成员操作符
成员操作符 包括 :“in”、 “not in”用来判断一个字符或者一个子串是否出现在另一个字符串中,如果出现返回True,如果不在返回False
In [38]: 'bc' in 'abcd'
Out[38]: True
In [40]: 'e' in 'abcd'
Out[40]: False
In [41]: 'e' not in 'abcd'
Out[41]: True
连接符
连接符 ‘+’,可以将多个字符串进行拼接,获取新的字符串
In [42]: a = 'abcd'+'hello'
In [43]: a
Out[43]: 'abcdhello'
格式化操作符
格式化操作符 %
In [44]: 'Hello, %s' % 'world'
Out[44]: 'Hello, world'
常见的占位符
占位符 | 含义 |
---|---|
%d | 整数 |
%s | 字符串 |
%f | 浮点数 |
%x | 十六进制数 |
如果不确定应该用什么,就用%s,它会把任何数据类型转换为字符串
字符串的特性
特殊字符串
一个反斜杠加一个单字符就可以表示一个特殊字符,通常不会打印在控制台上
常用的特殊字符串有“
”表示换行,“ ”表示tab键,其余还有 ,a,,v,f,
等一些特殊字符,可以查看官方文档
三引号
在上面说了单引号和双引号,python中还有一个三引号,三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符、以及其他特殊字符。
三引号常用在给类名或者函数添加注释。
字符串不变性
前面一直字符串不可改变,其实是字符串在同一个内存地址中不可修改,每次修改或者变更字符串时,都会开辟新的内存空间,虽然值是一样的,但是其在内存中的地址是不一样的。
小结
字符串是无论在哪种语言中都是极其重要的一个数据结构,其在python中的一些重要特性一定要牢牢记住、记准确。牢记仅使用UTF-8编码。