python中str的用法_Python str字符串精讲

字符串是最常见的一种数据类型,在现实生活中,比较适合用字符串表示的对象包括名字、诗词等。字符串表示一组有序的字符集合,如“床前明月光”就是一个字符串,“床”和“前”都是字符。

所以字符串最基本的属性就是长度,就是包含字符的个数。和其他语言类似,在 Python 中,长度为 0 的字符串也是合法的,也被称作空字符串。但和C语言、Java 语言不同的是,Python 中没有字符这个类型,或者我们可以认为字符就是长度为 1 的字符串。

在 Python 2 中,有两类字符串:

一类是 str 类型的字符,可以看作字节流,一般用来表示使用 ASCII 码字符就能表示的字符串,这类字符串不能直接用来表示中文字符;

另外一类是 unicode 类型的字符串,这类字符串可以用来表示中文。

而在 Python 3 中,只有 str 一种类型,但该类型就是 Python 2 中的 unicode 类型,我们可以用其表示任意字符。原来 Python 2 中的 str 类型在 Python 3 中用 bytes 类型表示。

本节主要讲述 Python 3 中字符串的用法。

字符串可以使用下面 4 种方式来表示:

使用单引号加上一串字符。

使用双引号加上一串字符。

使用 3 个单引号开始,使用 3 个单引号来结束,中间放上一串字符。

使用 3 个双引号开始,使用 3 个双引号来结束,中间放上一串字符。

下面是各种字符串表示法的例子:

>>> a = '' # 使用单引号,空字符串

>>> a = 'abc' # 使用单引号,包含3个字符,a、b和c

>>> a = "" # 使用双引号,空字符串

>>> a = "abc" # 使用双引号,包含3个字符,a、b和c

>>> a = """""" # 使用3个双引号,空字符串

>>> a = """abc""" # 使用3个双引号,包含3个字符,a、b和c

>>> a = """abc # 使用3个双引号,包含换行符

def # 第二行

ekl""" # 第三行

>>> a # 查看内容

'abc\ndef\nekl'

>>> a = '''abc # 使用3个单引号,包含换行符

def # 第二行

ijl''' # 第三行

>>> a # 查看内容,可以看到换行符\n

'abc\ndef\nijl'

str 类型的相关接口函数

字符串的基本操作包括得到子字符串、得到字符串的长度等。本节将介绍字符串类型的常用接口函数以及它们的用法。

1) 得到字符串长度——len()

其返回字符串中字符的个数。

>>> len("") # 空字符串,长度为0

0

>>> len("a") # 单个字符,所以长度为1

1

>>> len("ab") # 包含两个字符,所以长度为2

2

>>> len("abc") # 包含3个字符,所以长度为3

3

>>> a = "我爱python"

>>> len(a) # 包括8个字符

8

2) 得到子字符串——[开始位置:结束位置]

需要注意的是,字符串是不可以修改的,所以对子字符串是只能读不能写。

>>> in_str="abcdefghijklmn"

>>> in_str[2:] # 从第三个开始一直到最后

'cdefghijklmn'

>>> in_str[2] # 仅第三个字符

'c'

>>> in_str[2:5] # 第3个到第5个字符

'cde'

>>> in_str[2:5]="1234" # 试图做写操作,失败,抛出异常

Traceback (most recent call last):

File "", line 1, in

TypeError: 'str' object does not support item assignment

3) 是否为26个字母——isalpha()

如果字符串包含多个字符,那么是否所有的字符都是26个字母,包括大小写的字母。

>>> "".isalpha() # 空字符串不是26个字母

False

>>> "a".isalpha() # "a"包含的都是26个字母

True

>>> "a1".isalpha()

False

>>> "aB".isalpha()

True

4) 是否全部为 10 个数字字符——isdigit()

该函数用于判断是否所有的字符都是 0 到 9 的字符,如果有一个不是,返回 False,否则返回 True。

>>> "".isdigit() # 空字符返回False

False

>>> "0".isdigit() # 单个字符0,返回True

True

>>> "0a".isdigit() # 包含非数字字符a,返回False

False

>>> "009876".isdigit() # 全部为数字字符,返回True

True

5) 是否为26个字母或者10个数字字符——isalnum()

如果字符串中的每个字符都是 26 个字母或者 10 个数字字符,返回 True;如果有一个不是这个范围内的字符,返回 False。

>>> "009876".isalnum() # 都符合要求

True

>>> "a009876".isalnum() # 都符合要求

True

>>> "".isalnum() # 空字符串,返回False

False

>>> "abc_def".isalnum() # _字符不符合要求,所以返回False

False

6) 转换成小写字母——lower()

该函数将所有的大写字母都转换成小写字母,其他字符原封不动。

>>> "abCD987".lower() # CD => cd, 其他没有变化

'abcd987'

7) 转换成大写字母——upper()

该函数将所有的小写字母都转换成大写字母,其他字符原封不动。

>>> "abCD987".upper() # ab => AB

'ABCD987'

>>> "我爱python".upper()

'我爱PYTHON'

8) 将单词的首字母大写——title()

如果有多个单词,那么每个单词的首字母都变成大写的。

>>> "abc".title() # 仅仅包含一个单词

'Abc'

>>> "this is our favorite book".title() # 包含多个单词,每个的首字母都大写

'This Is Our Favorite Book'

9) 分割成字符串列表——split(分割字符)

分割字符可以是单个字符,也可以是一个字符串。下面的例子中既有单个字符组成的分割字符,也有多个字符组成的分割字符。

>>> "a:b:c".split(":") # 分割字符是单个字符

['a', 'b', 'c']

>>> "abc--def".split('--') # 分割字符是两个字符

['abc', 'def']

>>> "abc:def:".split(':') # 尾部有分割字符

['abc', 'def', '']

>>> "::::abc:def::::".split(':') # 头部有分割字符,有连续的分割字符

['', '', '', '', 'abc', 'def', '', '', '', '']

10) 将字符串列表拼接成一个字符串——join(字符串列表)

该接口函数接收一个字符串列表或者元组,返回一个新的字符串,输入的字符串集合不会发生变化。返回的字符串就是用指定的字符连接起来的。

下面的例子使用“:”来连接输入的字符串列表。

>>> ":".join(['a', 'b', 'c'])

'a:b:c'

11) 得到字符的ASCII码——ord(单个字符)

要求输入是包含单个字符的字符串。

ASCII 码是早期的一种编码方式,使用 8 位来表示一个字符。目前这种编码方式依然广泛使用,但这种表示方法无法表示中文。

>>> ord("a") # 字符a的ASCII码是97

97

>>> ord("x") # 字符x的ASCII码是120

120

>>> ord("?")

63

>>> ord("ab") # 两个字符,抛出异常

Traceback (most recent call last):

File "", line 1, in

TypeError: ord() expected a character, but string of length 2 found

12) 从 ASCII 码得到字符——chr(ASCII码值)

输入参数必须在 0 到 255 之间,超出范围会抛出异常。

>>> chr(0) # ASCII码中0表示的字符

'\x00'

>>> chr(255)

'\xff'

>>> chr(36)

'$'

>>> chr(2236) # 超出范围,导致抛出异常

Traceback (most recent call last):

File "", line 1, in

ValueError: chr() arg not in range(256)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值