详解Python核心对象类型字符串

yipeiwu_com7年前Python基础

Python的字符串的特点

  • Python与C语言,Java语言都不一样,没有单个字符,只有一个有一个字符的字符串。
  • 字符串对象不可修改,属于不可变类型
  • 字符串和列表,元组都从属于序列这个对象类别。所以序列支持的操作,字符串也支持。
  • 用单引号和双引号表示都行,并列的字符串串常量会自动合并,不需要显式的用加号表示。
  • 单双引号里面的特殊字符必须用转义序列表示,比如”,',\都需要在前面加个、,但是在三引号里面不需要转义。

Python的字符串的支持的基本操作

  • 支持序列的操作,比如len(‘abc')取长度
  • Python不允许混合数字和字符串的加法,比如9+'3'不会转成字符串,这点和Java不一样。
  • 分片通过偏移来指定分片的大小,[偏移A:偏移B:偏移C]从左到右偏移为正,从右到左偏移为负。偏移A省略表示最左端,偏移B省略表示最右端,如[1:]表示从索引为1到最右端。分片创建一个新的对象返回,所以用[:]可以实现拷贝。分片偏移C表示步进,从左端和右端的区间复制索引相差为步进的元素,组成新对象返回。
  • 修改字符串会产生一个新的字符串对象,这时候可能会有疑问,这样不是效率很低吗?在JAVA中确实是这样,如果用+号来合并字符串就会产生一个新对象,所以在JAVA中一般用StringBuilder避免产生过多的对象,但是在Python中没被变量引用的对象会立即回收掉空间,新对象会重用回收的空间。所以效率并不会很低。

Python的字符串转换

  • 数字与字符串之间的转换:通过内置函数int(‘42'),str(42),float(‘42')之类的来转换
  • 字符串与ASCII码之间的转换:ord(‘323')将字符串转为ASCII码,chr(23)将ASCII码转换为字符串

字符串方法

  • 修改字符串:通过合并+和分片[:]来修改,另一种是通过字符串的方法来修改。replace(‘goal','str')把字符串中的'goal'替换成'str'。find(‘index')返回字符串'index'开始的索引。list(‘sds')将字符串'sds'转换成列表['s','d','s'],这就变成了可变对象类型,可以直接对其进行多次修改,再调用”.join(列表)转换成字符串方法这比上面多次合并或切片效率要高。
  • 文本解析:split(”)方法可以将文本切割成列表。
  • 其他方法:rstrip()方法清除每行末尾空白,endswith(‘w')判断是否以'w'结尾和startswith(‘t')是否以't'开头。
  • 字符串不支持模式,需要使用Python的re标准库模块。

字符串格式化

Python支持在字符串放入%d,%s来实现类型替换,类似于C的printf。在字符串后面添加% 字符串 实现指定字符串替换,多个字符串要用()括起来。

基于字典的字符格式化

插入字符串的不再是固定的%d,%s而是%(字典的键)。替换的就是字典的值,这样有一个好处就是能把整个字符串中的对应字典键的字符串都替换成字典键对应的值。

字符串格式化调用方法

前面的都是通过表达式来进行字符串格式化。这里是通过字符串的方法进行格式化。这就和Java的占位符差不多了,template='{0},{1},{2}',template.format('s','d','s')来进行格式化。

相关文章

Python编程实现使用线性回归预测数据

Python编程实现使用线性回归预测数据

本文中,我们将进行大量的编程——但在这之前,我们先介绍一下我们今天要解决的实例问题。 1) 预测房子价格 房价大概是我们中国每一个普通老百姓比较关心的问题,最近几年保障啊,小编这点微末...

图文详解python安装Scrapy框架步骤

图文详解python安装Scrapy框架步骤

python书写爬虫的一个框架,它也提供了多种类型爬虫的基类,scrapy用途广泛,可以用于数据挖掘、监测和自动化测试 首先要先安装python 安装完成以后,配置一下环境变量。 还需...

跟老齐学Python之变量和参数

那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意义涵盖深远。我摘抄过来,看官读一读,是否理解,...

详解python-图像处理(映射变换)

详解python-图像处理(映射变换)

做计算机视觉方向,除了流行的各种深度学习算法,很多时候也要会基础的图像处理方法。 记录下opencv的一些操作(图像映射变换),日后可以方便使用 先上一张效果图 图二和图三是同一种方法...

解决python3 网络请求路径包含中文的问题

在爬一个网站的时候,端点包含中文浏览器是可以自动解决这个转换的,在代码中就需要处理一下了。 请求过程的异常如下: self._output(request.encode('ascii...