Python入门篇之字符串
admin
2023-07-31 02:11:56
0

所有标准的序列操作对字符串都适用,但字符串是不可变的

字符串常量:

单引号:‘spa\”m\’

双引号:\”spa\’m\”

三引号:\’\’\’…spam…\’\’\’,\”\”\”…spam…\”\”\”

转义字符:\”s\\tp\\na\\om\”

Raw字符串:r\”C:\\new\\test.spm\”

Unicode字符串:u\’eggs\\u0020spam

单双引号是一样的
单双引号可以互换,字符常量表达式可以用两个单引号或两个双引号来表示–两种形式同样有效返回相同类型的对象:

复制代码 代码如下:
>>> \’zxcvbn\’,\”zxcvbn\”
(\’zxcvbn\’, \’zxcvbn\’)
>>> #不适用转义字符就可以实现在一个字符串中包含其余种类 的引号
>>> \’knight\”s\’,\”knight\’s\”
(\’knight\”s\’, \”knight\’s\”)

可以自动在任意的表达式中合并相邻的字符串常量,尽管也可以使用+操作符实现:

复制代码 代码如下:
>>> title=\”sdfsd\”\’dfg\’\”fgfd\”
>>> title
\’sdfsddfgfgfd\’

字符串的格式化使用字符%来实现:

在%的左侧放置一个字符串,右侧放置希望格式化的值,可以使用一个值,也可以使用多个值的元组或字典

复制代码 代码如下:
>>> format=\”Hello. %s. %s enough for ya?\”
>>> values=(\’world\’,\’Hot\’)
>>> print format % values
Hello. world. Hot enough for ya?

如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以免出错

长字符串、原始字符串
1、长字符串

如果需要写一个非常长的字符串,需要跨多行,则可以使用三个引号代替普通引号

复制代码 代码如下:
>>> print \’\’\’this is
a
very long
string\’\’\’
this is
a
very long
string

如果一行之中最后一个字符是反斜线,那么换行符本身就“转义”了,也就是被忽略了

复制代码 代码如下:
>>> print \”hello.\\
world!\”
hello.world!
>>> #这个用法也适用表达式和语句
>>> 1+2+\\
      4+5
12
>>> print \\
      \’hello.world\’
hello.world

2、原始字符串

原始字符串以r开头,可以在原始字符串中放入任何字符,最后输出的字符串包含了转义所用的反斜线,但是不能在字符串结尾输入反斜线:

复制代码 代码如下:
>>> print \\
      \’hello.world\’
hello.world
>>> print r\’Let\\\’s go!\’
Let\\\’s go!
>>> print r\’this is illegal\\\’
SyntaxError: EOL while scanning string literal

索引与分片

字符串的字符是通过索引来提取的,将获得在特定位置的一个字符的字符串。

Python偏移量是从0开始的,并比字符串的长度小1,还支持类似在字符串中使用负偏移这样的方法从序列中获取元素,负偏移认作是从结束处反向计数

当使用一对冒号分隔的偏移索引字符串这样的序列对象时,将获取从下边界直到但不包括上边界的所有元素

索引(s[i])获取特定偏移的元素:

第一个元素的偏移为0

负偏移索引意味着从最后或右边反向进行计数

s[0]获取第一个元素

s[-2]获取了倒数第二个元素

分片(s[i:j])提取对应的部分作为一个序列:

上边界并不包含在内

分片的边界默认为0和序列的长度,如果没有给出的话

s[1:3]获取从偏移为1的元素,直到但不包括偏移为3的元素

s[1:]获取了从偏移为1直到末尾之间的元素

s[:3]获取了从偏移为0直到但是不包括偏移为3之间的元素

s[:-1]获取了从偏移为0直到但是不包括最后一个元素之间的元素

s[:]获取了从偏移0到末尾之间的元素

复制代码 代码如下:
>>> s=\’spam\’
>>> s[0],s[-2]
(\’s\’, \’a\’)
>>> s[1:3],s[1:],s[:-1]
(\’pa\’, \’pam\’, \’spa\’)
>>> s[0],s[-2]
(\’s\’, \’a\’)

扩展分片:第三个限制值

分片表达式增加了一个可选的第三个索引,用作步进X[I:J:K]表示:索引X对象中的元素,从偏移为I直到偏移为J-1,每隔K元素索引一次

复制代码 代码如下:
>>> s=\’abcdefghijklmnop\’
>>> s[1:10:2]
\’bdfhj\’
>>> s[::2]
\’acegikmo\’
>>> s=\’hello\’
>>> s[::-1]
\’olleh\’
>>> s[4:1:-1]
\’oll\’

字符串转换工具

复制代码 代码如下:
>>> \’42\’+1
Traceback (most recent call last):
  File \”\”, line 1, in
    \’42\’+1
TypeError: cannot concatenate \’str\’ and \’int\’ objects
>>> int(\’42\’),str(42)
(42, \’42\’)
>>> repr(42),\’42\’
(\’42\’, \’42\’)
>>> s=\’42\’
>>> i=1
>>> s+i
Traceback (most recent call last):
  File \”\”, line 1, in
    s+i
TypeError: cannot concatenate \’str\’ and \’int\’ objects
>>> int(s)+i
43
>>> s+str(i)
\’421\’
>>> #类似也可以把浮点数转换成字符串或把字符串转换成浮点数
>>> str(3.1415),float(\”1.3\”)
(\’3.1415\’, 1.3)
>>> text=\’1.23E-10\’
>>> float(text)
1.23e-10

字符串代码转换

单个字符也可以通过将其传给内置的ord函数转换为其对应的ASCII码,chr函数则执行相反的操作:

复制代码 代码如下:
>>> ord(\’s\’)
115
>>> chr(115)
\’s\’

字符串方法

字符串比列表的方法还要丰富很多,因为字符串从string模块中“继承”了很多方法,本篇文章只介绍一些特别有用的字符串方法

 1、find

find方法可以在一个较长的字符串中查找一个子字符串,它返回子串所在位置的最左端索引,如果没有找到则返回-1

复制代码 代码如下:
>>> \’with a moo-moo here, and a moo-moo there\’.find(\’moo\’)
7
>>> title=\”Monty Python\’s Flying Cirus\”
>>> title.find(\’Monty\’)
0
>>> title.find(\’Python\’)
6
>>> title.find(\’Zirquss\’)
-1

这个方法可以接受可选的起始点和结束点参数:

复制代码 代码如下:
>>> subject=\’$$$ Get rich now!!! $$$\’
>>> subject.find(\’$$$\’)
0
>>> subject.find(\’$$$\’,1)
20
>>> subject.find(\’!!!\’)
16
>>> subject.find(\’!!!\’,0,16)
-1

2、join

join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:

复制代码 代码如下:
>>> seq=[1,2,3,4,5]
>>> sep=\’+\’
>>> sep.join(seq)

Traceback (most recent call last):
  File \”\”, line 1, in
    sep.join(seq)
TypeError: sequence item 0: expected string, int found
>>> seq=[\’1\’,\’2\’,\’3\’,\’4\’,\’5\’]
>>> sep.join(seq)
\’1+2+3+4+5\’
>>> dirs=\’\’,\’usr\’,\’bin\’,\’env\’

>>> \’/\’.join(dirs)
\’/usr/bin/env\’
>>> print \’C:\’+\’\\\\\’.join(dirs)
C:\\usr\\bin\\env

3、lower

lower方法返回字符串的小写字母版

复制代码 代码如下:
>>> \’HDWUD HDJHS LKJDS\’.lower()
\’hdwud hdjhs lkjds\’

4、replace

replace方法返回某字符串的所有匹配项均被替换后得到字符串

复制代码 代码如下:
>>> \’This is a test\’.replace(\’is\’,\’eez\’)
\’Theez eez a test\’

5、split

它是join的逆方法,用来将字符串分割成序列

复制代码 代码如下:
>>> \’1+2+3+4+5\’.split(\’+\’)
[\’1\’, \’2\’, \’3\’, \’4\’, \’5\’]
>>> \’C:\\usr\\bin\\env\’.split(\’/\’)
[\’C:\\\\usr\\x08in\\\\env\’]
>>> \’Using the default\’.split()
[\’Using\’, \’the\’, \’default\’]

注意:如果不提供任何分隔符,程序会把所有的空格作为分隔符

6、strip

strip方法返回去除两侧(不包含内部)空格的字符串:

复制代码 代码如下:
>>> \’     internal whitespace is kept     \’.strip()
\’internal whitespace is kept\’

也可指定需要去除的字符,将它们列为参数即可:

复制代码 代码如下:
>>> \’*** SPAM * for * everyone!!! ***\’.strip(\’ *!\’)
\’SPAM * for * everyone\’

注意:只会去除两侧的字符

7、translate

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...