Task04:字符串与序列(1day)

Task04:字符串与序列(1day)
在之前的Task01中的数据类型中我们已经大致介绍了一些字符串的基本知识,接下来我们就详细得来介绍一下字符串。
1.字符串
字符串
字符串是以单引号’或双引号"括起来的任意文本,比如’abc’,“xyz"等等。请注意,’'或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识

>>> print('I\'m"OK"!')
I'm"OK"!
>>>

如果你不希望前置的\把字符转义成特殊字符的含义,那么就使用原始字符串的方式,在引号前添加r即可

>>> print('C:\some\name')
C:\some
ame

这里的\n就是换行的意思,这样不能表达这个字符串的真正含义,

>>> print(r'C:\some\name')
C:\some\name

这样就能得到我们想要的字符串了。
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’'的格式表示多行内容,代码如下:

>>> print('''line1
line2
line3''')
line1
line2
line3

我们下面举一个其中一行之中有转义字符的例子:

>>> print('''在多行字符串中
我们可以使用\n去实现
但是\n写在一行中不方便阅读代码''')
在多行字符串中
我们可以使用
去实现
但是
写在一行中不方便阅读代码

可以看到代码中把转义字符也实现了,这里需要注意一下。
字符串可以用 + 进行连接(粘到一起),也可以用 * 进行重复:

>>> text=('ab')
>>> text1=('cd')
>>> text2=3*text+text1
>>> print(text2)
abababcd

相邻的两个或多个 字符串字面值 (引号引起来的字符)将会自动连接到一起

>>> 'Py''thon'
'Python'

把很长的字符串拆开分别输入的时候尤其有用:

>>> text=('Put several strings within parentheses '
'to have them joined together.')
>>> print(text)
Put several strings within parentheses to have them joined together.

但是上面的做法只能对两个字面值这样操作,对于变量或表达式不行:

>>> prefix='Py'
>>> prefix 'thon'
SyntaxError: invalid syntax

但是可以在变量后面直接用加号连接字符串:

>>> prefix+'thon'
'Python'

字符串也可以像列表和元组那样,也是可以索引字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。单个字符并没有特殊的类型,只是一个长度为一的字符串:

'Python'
>>> word='Python'
>>> word[0]
'P'
>>> word[5]
'n'

索引也可以用负数,这种会从右边开始数:

>>> word[-1]
'n'
>>> word[-2]
'o'

意切片的开始总是被包括在结果中,而结束不被包括,就是相当于数学区间的左开右闭。这使得 s[:i] + s[i:] 总是等于 s
切片的索引有默认值;省略开始索引时默认为0,省略结束索引时默认为到字符串的结束:
也可以这么理解切片:将索引视作指向字符之间 ,第一个字符的为0,最后一个字符的为 n -1,其中 n 是字符串长度。而0=-0,所以负数的索引是从-1开始的。也就是word[-1]就是字符串的最后一位。

>>> word[:2]
'Py'
>>> word[4:]
'on'
>>> word[4:5]
'o'
>>> 

使用过大的索引会产生一个错误:

>>> word[9]
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    word[9]
IndexError: string index out of range

但是,切片中的越界索引会被自动处理:

>>> word[2:9]
'thon'

Python 中的字符串不能被修改,它们是 immutable 的。因此,不能向字符串的某个索引位置赋值,这样会产生错误的,如果需要一个不同的字符串,应当新建一个:

>>> 'J'+word[1:]
'Jython'

2.字符串的方法
1.str.capitalize():返回原字符串的副本,其首个字符大写,其余为小写。
str.casefold():返回原字符串消除大小写的副本。 消除大小写的字符串可用于忽略大小写的匹配。
lower() :转换字符串中所有大写字符为小写。
upper() :转换字符串中的小写字母为大写。
swapcase() :将字符串中大写转换为小写,小写转换为大写

>>> text='Abcd'
>>> print(text.capitalize())
Abcd
>>> print(text.casefold())
abcd
>>> print(text.lower())
abcd
>>> print(text.upper())
ABCD
>>> print(text.swapcase())
aBCD

2.count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。

>>> text='abcdabcd'
>>> print(text.count('a'))
2

endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。
startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。

>>> text='sdadwqdw'
>>> print(text.endswith('w'))
True
>>> print(text.endswith('d',2,5))
False
>>> print(text.startswith('s',0,7))
True

find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找。

>>> print(text.find('dw'))
3
>>> print(text.find('dw',0,3))
-1

isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。

>>> print(text.isnumeric())
False
>>> text1='123123'
>>> print(text1.isnumeric())
True

ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。
rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。

>>> print(text.ljust(10,'s'))
sdadwqdwss
>>> print(text.rjust(10,'s'))
sssdadwqdw
>>> 

lstrip([chars]) 截掉字符串左边的空格或指定字符。
rstrip([chars]) 删除字符串末尾的空格或指定字符。
strip([chars]) 在字符串上执行lstrip()和rstrip()。

>>> print(text.lstrip('s'))
dadwqdw
>>> print(text.lstrip('d'))
sdadwqdw
>>> print(text.lstrip().strip('s'))
dadwqdw
>>> print(text.lstrip().strip('d'))
sdadwqdw

可以看到如果是指定的字符,如果是左边或者右边的字符,确实会删除,但是如果不是就不会对于原字符做出改变。
8.
partition(sub) 找到子字符串sub,把字符串分为一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’,’’,’’)。rpartition(sub)类似于partition()方法,不过是从右边开始查找。

>>> print(text.partition('d'))
('s', 'd', 'adwqdw')
>>> print(text.rpartition('d'))
('sdadwq', 'd', 'w')

9.replace(old, new [, max]) 把 将字符串中的old替换成new,如果max指定,则替换不超过max次。

>>> print(text.replace('d','a'))
saaawqaw
>>> print(text.replace('d','a',2))
saaawqdw

10.split(str="", num) 不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。

>>> print(text.split('d'))
['s', 'a', 'wq', 'w']

注意这里不包含‘d’字符。

3.字符串格式化
格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。

>>> str="{0} qwer {b}".format("yasuo",b='ctrl6')
>>> print(str)
yasuo qwer ctrl6

这里要注意,要按照顺序,0、1……或者是a、b……来给出字符的位置。

Python 字符串格式化符号
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。当右边的参数为一个字典(或其他映射类型)时,字符串中的格式 必须 包含加圆括号的映射键,对应 ‘%’ 字符之后字典中的每一项。 映射键将从映射中选取要格式化的值。

转换符含义
d有符号十进制整数
i有符号十进制整数
o有符号八进制数
x有符号十六进制数(小写)
X有符号十六进制数(大写)
e浮点指数格式(小写)
E浮点指数格式(大写)
f浮点十进制格式
F浮点十进制格式
g浮点格式,如果指数小于-4或不小于精度则使用小写指数格式,否则使用十进制格式
G浮点格式。 如果指数小于 -4 或不小于精度则使用大写指数格式,否则使用十进制格式。
c单个字符(接受整数或单个字符的字符串)。
r字符串(使用 repr() 转换任何 Python 对象)。
s字符串(使用 str() 转换任何 Python 对象)。
a字符串(使用 ascii() 转换任何 Python 对象)。
%不转换参数,在结果中输出一个 ‘%’ 字符。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值