字符串

字符串基本特点

  字符串的本质是一个字符序列。Python的字符串是不可变的,无法对原字符串做任何修改。可将字符串的一部分复制到新创建的字符串,达到看起来修改的效果

  Python不支持单字符类型,单字符也是作为一个字符串使用的。

字符串的编码

  直接支持Unicode,可表示世界上任何书面语言。16位表示一个字符,ASCII码是Unicode的子集

  使用内置函数ord()可以把字符转换成对应的Unicode码

  使用内置函数chr()可以把十进制数字转换成对应字符串

引号创建字符串

  通过单引号或双引号创建字符串

a =  "I'm a teacher"
print(a)
b = 'My name is "TOM"'
print(b)

连续三个单引号或三个双引号,可以创建多行字符串。

resume = ''' name="gaoqi"
company = "six"  age=  18
lover = "TOM"'''
print(resume)

空字符串和len()函数

Python允许空字符串的存在,不包含任何字符且长度为0

len()用于计算字符串中包含多少字符

转义字符

转义字符 描述
\(在行尾时) 续行符
\ 反斜杠符号
\' 单引号
\" 双引号
\b 退格
\n 换行
\t 横向制表符
\r 回车

字符串拼接

1.可以使用+将多个字符串拼接起来。 'aa'+'bb'==>'aabb'

  ① 如果+两边都是字符串,则拼接

  ②如果+两边都是数字,则加法运算

  ③如果+两边类型不同,则抛出异常

2.可以将多个字符串直接放到一起实现拼接。例如: 'aa' 'bb'==>'aabb'

字符串复制

  使用*可是实现字符串的复制

  【操作】字符串的复制操作

>>> a = 'Sxt'*3
>>> a
'SxtSxtSxt'

不换行打印

print()会自动打印一个换行符。若不想换行,可以自己通过修改end='任意字符串'。实现末尾添加任何内容

print("dhg",end='')
print("dhg",end='##')
print("dhg")

输出:

dhgdhg##dhg
>>> 

从控制台读取字符

使用input()从控制台读取键盘输入的内容

myname = input("请输入姓名:")

str()实现数字转型字符串

str()可以实现其它数据类型转换为字符串

str(5.20)==>'5.20'  str(3.14e2) ==>  '314'  str(True)=  'True' 

使用[ ]提取字符

在字符串后面加[],在[]里面指定偏移量,可以提取该位置的单个字符

  正向搜索:

    最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str) -1

  反向搜索

    最右侧第一个字符,偏移量是-1,倒数第二个是-2,以此类推,直到-len(str)

复制代码
>>> a='qwertyuiopasdfghjklzxcvbnm'
>>> a
'qwertyuiopasdfghjklzxcvbnm'
>>> a[0]
'q'
>>> a[3]
'r'
>>> a[26-1]
'm'
>>> a[-1]
'm'
>>> a[-26]
'q'
复制代码

replace()实现字符串替换

字符串是不可改变的,可以通过创建新的字符串来实现

>>> a='qwertyuiopasdfghjklzxcvbnm'
>>> a.replace('c','')
'qwertyuiopasdfghjklzx高vbnm'

字符串切片slice操作

切片slice操作可以快速提取子串

[start : end :step]  (包头不包尾)

[:] 提取整个字符串

[start:] 从start开始到结束

[:end] 从0开始到end-1

[start:end] 从start 到end-1

 split()分割和join()合并

split()可以基于指定分隔符将字符串分割成多个子字符串。若不指定分隔符,则默认使用空白字符(换行、空格、制表)

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']

 

join()的作用和split()作用刚相反,用于将一系列子字符串连接起来

>>> a = ['six','six100','six200']
>>> "*".join(a)
'six*six100*six200'

 

字符串拼接要点:

  使用字符串拼接+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join()函数,因为join()函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象

字符串驻留机制和字符串比较

字符串驻留:仅保存一份相同且不可变的字符串的方法,不同的值被存放在字符串驻留池中。Python支持字符串驻留机制,对于符合标识符规则的字符串(下划线 字母 数字),会启用字符串驻留机制

>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False

 

成员操作符

in/not in 关键字,判断某个字符(子字符串)是否存在于字符串中

字符串常用方法汇总

常用查找方法

方法 说明
len(a) 字符串长度
a.startswith("子字符串") 是否以某字符串开头
a.endswith("子字符串") 是否以某字符串结尾
a.find("子字符串") 第一次出现指定字符串的位置
a.rfind("子字符串") 最后一次出现指定字符串的为位置
a.count("子字符串") 指定字符串出现了几次
a.isalnuma() 是否所有字符全是字母或数字

去除首尾信息

可通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左侧指定信息,rstrip()去除字符串右侧指定信息

大小写转换

示例 说明
a.capitalzie() 产生新的字符串,首字母大写
a.title() 产生新的字符串,每个单词首字母都大写
a.upper() 产生新的字符串,所有字母都转换成大写
a.lower() 产生新的字符串,所有字母都转换成小写
a.swapcase() 产生新的字符串,所有字母大小写交换

格式排版

center()、ljust()、rjust()这三个函数用于对字符串实现排版

复制代码
>>> a = "SXT"
>>> a.center(10,"*")
'***SXT****'
>>> a.center(10)
'   SXT    '
>>> a.ljust(10,"*")
'SXT*******'
>>> a.rjust(10,"*")
'*******SXT'
复制代码

 

其它方法

  1. isalnum()  是否为字母或数字
  2. isalpha()  检测字符串是否只由字母组成(含汉字)
  3. isdigit()  检测字符串是否只由数字组成
  4. isspace()  检测是否为空白符
  5. isupper()  是否为大写字母
  6. islower()  是否为小写字母 

字符串格式化

format()基本使用方法

str.format(),增强了字符串格式化的功能,通过{}和:来替代以前的%

format函数可以接受不限个参数,位置可以不按顺序

复制代码
>>> a = "姓名是:{0},年龄是:{1}"
>>> a.format("张三",19)
'姓名是:张三,年龄是:19'
>>> a.format("高希希",6)
'姓名是:高希希,年龄是:6'
>>> b = "姓名是:{0},年龄是:{1},:{0}是个好小伙"
>>> b.format("张三",22)
'姓名是:张三,年龄是:22,:张三是个好小伙'
>>> c = "名字是{name},年龄是{age}"
>>> c.format(age=22,name="张三")
'名字是张三,年龄是22'
复制代码

 

通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。

 

填充与对齐

填充常和对齐一起使用

^  <  >  分别是居中、左对齐、右对齐,后面带宽度

:后面带填充的字符,只能是一个字符,不指定的话默认用空格填充

 

>>> "{:*>8}".format(234)
'*****234'
>>> "我是{0},我喜欢数字{1:*>8}".format("张三",666)
'我是张三,我喜欢数字*****666'

 

数字格式化 

a = "我是{0},我的存款有{1:.2f}"
>>> a.format("张三",38888.234342)
'我是张三,我的存款有38888.23'

 

 可变字符串

Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。但是,经常我们需要原地修改字符串,可以使用io.StringIO对象或array模块

复制代码
>>> import io
>>> s = "hello,sxt"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x000001BEAAE53F70>
>>> sio.getvalue()
'hello,sxt'
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello,sgt'
复制代码
posted @   shengtudai  阅读(2348)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示