小白从零开始学编程(五)--python数据类型--字符串

前言

从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编码。

原文地址:https://www.cnblogs.com/codeBang/p/12539139.html