3. 字符串

字符串是什么

字符串是一个个字符(实际还是字符串)组成的不可变的有序序列。 字符串是字面常量。 Python3开始字符串默认为Unicode。

字符串如何定义

  • 单引号

    string = 'hello \nworld' #这里用到了第一章提到的转义字符,还记得嘛~
  • 双引号

    string = "abcdefg'asada'savdsd"
  • 三引号

    Sql  = """select * from user where name = 'Tom'"""
  • R(r)字符串

    addr = r"c:\Windows\nt\"

    字符串的访问

    就像元组和列表一样,Python中字符串也可以通过索引访问。但是由于Python中没有字符类型,索引出来还是字符串(但只有一个字符)。

    字符串可以遍历,可以迭代。

字符串的查询与判断

index

后面跟着一个字符,返回一个值对应的索引。也可以指定开始与结束的区间。

find

后面跟着一个字符,返回第一个索引值。如果找不到则返回-1。

rfind

find

count

和列表中的count相同,返回一共一个字符出现了几次。

endswith(suffix start end)

返回一个布尔类型,检查字符串是否由suffix结尾。

startswith (suffix start end)

返回一个布尔类型,检查字符串是否由suffix开头。

is系列判断:

is名称

含义

isalnum

字母与数字

isalpha

字母

isdecimal

数字

isdigit

数字

isidentifier

字母数字下划线(非数字开头)

islower

小写字母

isupper

大写字母

isspace

空白字符

istitle

以大写开始,其余字母均为小写

字符串的变更

字符串不可变,所有操作都是返回新的字符串

字符串的连接

字符串的join连接

如果在一个字符串后面加上.join,参数再加上一个可以迭代的对象,那么会发生什么呢?让我们来尝试一下。

lst = ['1','2','3']
print("@".join(lst))

返回

1@2@3

字符串的join功能是将可迭代对象用前面的字符串拼接起来,返回新的字符串。 但是:可迭代对象里面必须也全部是字符串,否则会引发错误。

字符串的 + 连接

字符串之间是支持+进行操作的。加号表示连接两个字符串并返回新的字符串。

str1 = 'hello '
str2 = 'world'
print(str1+str2)

返回

hello world

字符串的重复

*

可以使用*重复字符串内容,返回新的字符串。

str1 = 'hello'
print(str1*2)

返回

hellohello

字符串的分割:

split系列:

split

语法str.split(str="", maxsplit=-1)· 其中str表示分隔符,默认为空字符(也就是空格,\r,\n,\t)。maxsplit表示分割次数,-1表示全字符串。 分割结束之后返回一个被分割的内容的列表

rsplit

split,不过是从右面开始的

splitlines

按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表。 后面可以跟一个布尔型True,表示保留换行符。否则默认为False不保留。

partition系列

partition

按照指定的分隔符分割成两半,返回这两端和分隔符的元组。 类似于split("分隔符",1)

rpartition

partition,不过是从右侧开始分割

字符串的覆盖

replace(old, new, count):把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数count,则替换不超过 count 次,最终返回一个新的字符串。

字符串的删除

strip类似其他语言中的trim,会从两端删除空白字符。如果指定了字符集,那么就删除两端所有属于这个字符集的字符。直到遇见第一个非字符集的字符。 如果要单独处理左边或者右边,可以用lstriprstrip。 处理结束以后会返回一个新的字符串。

字符串的字母处理

upper 全部大写 lower 全部小写 swapcase 大小写转换 title 首字母大写 capitalize 首单词大写

字符串格式化

利用字符串的功能排版

  • center(宽度,填充字符) 居中打印

  • zfill(打印宽度)居右打印,填充0

  • ljust (宽度,填充字符)左对齐

  • rjust (宽度,填充字符)右对齐

    printf-style 格式化

    类似C语言中的printf。

    示例

格式化符号:

符号

描述

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%u

格式化无符号整型

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同%e,用科学计数法格式化浮点数

%g

%f和%e的简写

%G

%f 和 %E 的简写

%p

用十六进制数格式化变量的地址

format

Python建议使用

格式

"{}{xxx}".format(args,*kwargs) 花括号表示占位符,按照位置匹配。 如果{n},则表示取后面索引为n的元素的值

返回值

新的字符串

示例

"I am %03d" % (20,)
'I am 020'

位置参数

"{}:{}".format("yaoyao.sh",9000)
'yaoyao.sh:9000'

访问元素

"{0[0]}:{0[1]}".format(["yaoyao.sh",9000])
'yaoyao.sh:9000'

对象属性访问

from collections import namedtuple
Point = namedtuple("Point","x,y")
p = Point(4,5)
"({{{0.x},{0.y}}})".format(p)
'({4,5})'

f字符串(Python3.6+)

刚刚新添加的一个功能。

a = 4
b = 5
print(f"{a}*{b}={a*b}")
4*5=20

Last updated