Python核心技术——重新认识字符串

Python核心技术——重新认识字符串前言前面我们已经学习了《Python核心技术——重新定义列表和元组 》和《Python核心技术——重新认识字典和集合》。今天我们来学习一下无处不

大家好,欢迎来到IT知识分享网。

前言

前面我们已经学习了《Python核心技术——重新定义列表和元组 》和《Python核心技术——重新认识字典和集合》。今天我们来学习一下无处不在的字符串(string),比如日志的打印、程序中函数的注释、数据库的访问、变量的基本操作等等,都用到了字符串。

Python核心技术——重新认识字符串

字符串基础

什么是字符串呢?字符串是由独立字符组成的一个序列,通常包含在单引号(”)双引号(””)或者三引号之中(”’ ”’或””” “””,两者一样),比如下面几种写法。

name =''小小码农''
city = '北京'
text = ''''"你好,欢迎大家评论和转发"''''

这里定义了 name、city 和 text 三个变量,都是字符串类型。我们知道,Python 中单引号、双引号和三引号的字符串是一模一样的,没有区别。Python 的三引号字符串,则主要应用于多行字符串的情境,比如函数的注释等等。

Python 转义字符

Python 支持转义字符。所谓的转义字符,就是用反斜杠开头的字符串,来表示一些特定意义的字符。我把常见的的转义字符,总结成了下面这张表格。

Python核心技术——重新认识字符串

为了方便你理解,我举一个例子来说明

s = 'a\nb\tc'
print(s)
# 运行结果
a
b   	c

这段代码中的’\n’,表示一个字符——换行符;’\t’也表示一个字符——横向制表符。所以,最后打印出来的输出,就是字符 a,换行,字符 b,然后制表符,最后打印字符 c。不过要注意,虽然最后打印的输出横跨了两行,但是整个字符串 s 仍然只有 5 个元素。

字符串的常用操作

Python 的字符串支持索引,切片和遍历等等操作。

name = 'jason'
#索引
name[0]
'j'
# 切片
name[1:3]
'as'

和其他数据结构,如列表、元组一样,字符串的索引同样从 0 开始,index=0 表示第一个元素(字符),[index:index+2] 则表示第 index 个元素到 index+1 个元素组成的子字符串。

遍历字符串同样很简单,相当于遍历字符串中的每个字符。

name = 'jason'
for char in name:
    print(char) 

#运行结果
j
a
s
o
n

Python 中字符串的改变,通常只能通过创建新的字符串来完成。比如,想把’hello’的第一个字符’h’,改为大写的’H’,我们可以采用下面的做法:

s = 'H' + s[1:]
s = s.replace('h', 'H')
  • 第一种方法,是直接用大写的’H’,通过加号’+’操作符,与原字符串切片操作的子字符串拼接而成新的字符串。
  • 第二种方法,是直接扫描原字符串,把小写的’h’替换成大写的’H’,得到新的字符串。

Python 在处理时,重新创建新的字符串。因此,每次想要改变字符串,往往需要 O(n) 的时间复杂度,其中,n 为新字符串的长度。

字符串的格式化

什么是字符串的格式化呢?

通常,我们使用一个字符串作为模板,模板中会有格式符。这些格式符为后续真实值预留位置,以呈现出真实值应该呈现的格式。字符串的格式化,通常会用在程序的输出、logging 等场景。

举一个常见的例子。比如我们有一个任务,给定一个用户的 userid,要去数据库中查询该用户的一些信息,并返回。而如果数据库中没有此人的信息,我们通常会记录下来,这样有利于往后的日志分析,或者是线上 bug 的调试等等。

print('no data available for person with id: {}, name: {}'.format(id, name))

其中的 string.format(),就是所谓的格式化函数;而大括号{}就是所谓的格式符,用来为后面的真实值——变量 name 预留位置。如果id = ‘123’、name=’jason’,那么输出便是:

'no data available for person with id: 123, name: jason'
Python核心技术——重新认识字符串

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/36559.html

(0)
上一篇 2024-04-12 15:33
下一篇 2024-04-14 16:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信