文章目录

  • 使用方法修改字符串大小写
  • 字符串拼接
  • 字符串去除空白
  • 语法错误
  • 内存表示
  • 索引及切片
  • 基本操作
  • 字符串格式化输出
  • %格式化输出方式
  • 字典式格式化输出
  • string.format()格式化输出方式



字符串(String)是由零个或多个字符组成的有限串行。一般极为s=a[1]a[2]…a[n]。


在python中用引号括起来的都是字符串,其中的引号可以是单引号也可以是双引号。

'This is a string'
"This is also a string"



使用方法修改字符串大小写

>>> name= "avril ramona lavigne"
>>> name.title()
'Avril Ramona Lavigne'

我们可以通过 dir(str.title) 来查看该方法

title(self, /)
    Return a version of the string where each word is titlecased.

    More specifically, words start with uppercased characters and all remaining cased characters have lower case.

类似的方法还有

>>> name.upper()
'AVRIL RAMONA LAVIGNE'
>>> name.lower()
'avril ramona lavigne'



字符串拼接

在很多情况下都需要合并字符串。python使用加号(+)来合并字符串。

>>> "Avril"+" "+"Ramona Lavigne"
'Avril Ramona Lavigne'

对于非字符串类型我们可以使用str()或者repr()来进行类型转化。

>>>name="ada"
>>>n=name+str(123)
>>>n
'ada123'



字符串去除空白

对于字符串 ’ Avril Ramona Lavigne '和’Avril Ramona Lavigne’表面上看起来并没有上面区别,实则有所不同,前者首尾皆有空白。

# 删除右端空格
>>> a.rstrip()
' Avril Ramona Lavigne'
>>> b.rstrip()
'Avril Ramona Lavigne'

# 删除左端空格
>>> a.lstrip()
'Avril Ramona Lavigne '
>>> b.lstrip()
'Avril Ramona Lavigne'

#删除两端空格
>>> a.strip()
'Avril Ramona Lavigne'
>>> b.strip()
'Avril Ramona Lavigne'



语法错误

在使用字符串时应避免一些语法上的错误。

>>> dog='This's dog'
  File "<stdin>", line 1
    dog='This's dog'
              ^
SyntaxError: invalid syntax

#改成使用双引号或者转译字符即可
>>> dog="This's dog"
>>> dog='This\'s dog'

python中的字符串与列表类似,但字符串是不可变对象你不能像修改列表那样改变字符串中的一个字符。例如:s=”string“,s[0]=‘S’,是错误的。如果我们想使s="String"则需要创建全新的字符串。

内存表示

相对于列表,python的内存表示方法较为简单。如下图所示:

python字符串判断是以为前缀_空格

仅需要包含一下两部分信息:

  • 一个指向字符串中字符连续存储的内存地址的引用。
  • 字符串的长度

如果我们想通过数组来实现字符串,如定义一个s=[‘s’,‘t’,‘r’,‘i’,‘n’,‘g’]那么在内存中又是如何实现的呢?

如下图所示:

python字符串判断是以为前缀_字符串_02


索引及切片

通过索引访问指定字符

>>> str="hello world"
>>> str[0]
'h'

通过字符找到索引(第一个)

>>> str.index("w")
6
>>> str.index("1")
2

虽能访问 但却不能进行修改

>>> str[0]="1"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

切片

>>> str[1:3]
'el'
>>> str[1:]
'ello world'
>>> str[:3]
'hel'

>>> str[-2:]
'ld'
>>> str[:-1]
'hello worl'

引用复制

#引用复制
>>> id(str)
2894724648688
>>> copy1=str
>>> id(copy1)
2894724648688
>>> copy2=str[:]
>>> id(copy2)
2894724648688



基本操作

+:连接两个序列。
*:重复序列元素。
in:判断元素是否存在于序列中。
max():返回最大值。
min():返回最小值。
len():返回字符串的长度。

“+”连接字符串
连接两个字符串。

>>> a="asd"
>>> b="qwe"
>>> a+b
'asdqwe'



* 操作
字符串中的“乘法”含义是重复那个字符串。

>>> a*3
'asdasdasd'



in操作
in用来判断某个字符串是不是在另外一个字符串内,或者判断某个字符串内是否包含某个字符串,如果包含,就返回True,否则返回False。

>>> "a"in a
True
>>> "a" in b
False



最值
返回字符串中ASCII编码最大的或最小的字符。

>>> max(a)
's'
>>> min(a)
'a'



len()
返回字符串中的字符数。

>>> len(a)
3



字符串格式化输出

%格式化输出方式

所谓格式化输出就是字符串线按照既定的版本,在这个模块中某个或者某几个地方留出空位来,然后在那些空位填上字符串。

占位符

说明

%s

字符串(采用str()的显示)

%r

字符串(采用repr()的显示)

%c

单个字符

%b

二进制整数

%d

十进制整数

%e

指数(底数为e)

%f

浮点数

对于浮点数打印我们有时还需要精确到某位,这时我们可以限制输出的小数位数和其他样式:

>>> print("hello,%f"%0.3214)
hello,0.321400
>>> print("hello,%0.2f"%0.3214)
hello,0.32
>>> print("hello,%.2f"%0.3214)




字典式格式化输出

>>> student={"zhang":64,"li":89,"wang":75}
>>> print("zhang's English score is %(zhang)d,wang's %(wang)d"%student)
zhang's English score is 64,wang's 75

string.format()格式化输出方式

在python中还有一种新的格式化方法:string.format()的格式化方法,其中{}作为占位符。只需要将对应的东西按照顺序在format后面的括号中排列好,分别对应占位符{}即可。
其中可中填入数字或字符以作标记




数字

格式

输出

描述

3.141592654

{:.2f}

3.14

保留小数点后两位

3.141592654

{:+.2f}

+3.14

带符号保留(减同)

5

{:0>2d}

05

右对齐宽度2以0补全

10

{:x<4d}

左对齐以x补全

1000000

{:,}

1,000,000

以逗号分隔的格式

0.25

{:.2%}

25.00%

保留两位小数的分数显示

1000000000

{:.2e}

1.00e+09

保留两位小数的指数显示

13

{:>10d}

_____13

右对齐,宽度为10

13

{:<10d}

13_____

左对齐,宽度为10

13

{^10d}

13

居中,宽度为10

# 对照位置填写相应内容
>>> s="I like {0}.he like{1}".format("python","C#")
>>> s
'I like python.he likeC#'
# 上述表格的使用方法
>>> a="pi is {:.2f}".format(3.14159)
>>> a
'pi is 3.14'
# 也可以指定说明
>>> print("Hi,{asd}.It's really a {qwe}morning".format(qwe="pleasant",asd=" we haven't seen each other for a long time"))
Hi,we haven't seen each other for a long time.It's really a pleasant morning.