【从零学习python 】Python字符串操作与应用
  LyJBRSvfEdxZ 2023年11月13日 64 0

学习目标

  1. 字符串的表示方式
  2. 字符串的下标和切片
  3. 字符串的常见操作
  4. 字符集和编码
  5. 成员运算符
  6. 字符串的format方法

字符串介绍

字符串可以理解为一段普通的文本内容,在python里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。

字符串表示方式

a = "I'm Tom"  # 一对双引号 
b = 'Tom said:"I am Tom"'  # 一对单引号
c = 'Tom said:"I\'m Tom"'  # 转义字符
d = '''Tom said:"I'm Tom"'''  # 三个单引号
e = """Tom said:"I'm Tom" """  # 三个双引号

小总结

  • 双引号或者单引号中的数据,就是字符串
  • 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
  • 使用三个单引号、双引号定义的字符串可以包裹任意文本

转义字符

转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分,使用\来表示一个转义字符。常见的转义字符以及它所代表的含义如下表:

转义字符 含义
\r 将当前位置移到本行开头
\n 将当前位置移到下一行开头
\t 用来表示一个制表符
\ 代表一个反斜线字符
' 用来显示一个单引号
" 用来显示一个双引号

下标和切片

一、 下标/索引

所谓“下标”又叫“索引”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间

生活中的 "下标"

超市储物柜 在这里插入图片描述

字符串中"下标"的使用

如果有字符串:name = 'abcdef',在内存中的实际存储如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E5cdUzhG-1691737782301)(https://.../string_index.png)]

1. 如果想取出部分字符,那么可以通过下标的方法,(注意在计算机中,下标从 0 开始)

name = 'abcdef'

print(name[0])
print(name[1])
print(name[2])

运行结果:

a
b
c

2. 遍历

所谓遍历,可以理解为按照一定的规则(一般情况下就是数据的下标),访问每一个数据。不是所有的数据都能够被遍历,字符串是可迭代对象,能够进行遍历。

可以使用while和for语句,对字符串里的元素进行遍历。

while语句遍历:

msg = 'hello world'
i = 0
while i < len(msg):
    print(msg[i])
    i += 1

for语句遍历:

msg = 'hello world'
for x in msg:
    print(x)

3. 切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束]

注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。

# 索引是通过下标取某一个元素
# 切片是通过下标去某一段元素

s = 'Hello World!'
print(s)

print(s[4])  # o 字符串里的第4个元素

print(s[3:7])  # lo W 包含下标 3,不含下标 7

print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:4])  # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)

print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素) 

# python 字符串快速逆置
print(s[::-1])  # !dlroW olleH 从后向前,按步长为1进行取值

字符串常见操作

字符串的常见操作包括:

  • 获取长度: len
  • 查找内容: find, index, rfind, rindex
  • 判断: startswith, endswith, isalpha, isdigit, isalnum, isspace
  • 计算出现次数: count
  • 替换内容: replace
  • 切割字符串: split, rsplit, splitlines, partition, rpartition
  • 修改大小写: capitalize, title, upper, lower
  • 空格处理: ljust, rjust, center, lstrip, rstrip, strip
  • 字符串拼接: join

注意:在Python中,字符串是不可变的!所有的字符串相关方法,都不会改变原有的字符串,都是返回一个结果,在这个新的返回值里,保留了执行后的结果!


len

len 函数可以获取字符串的长度。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(len(mystr))  # 17 获取字符串的长度

查找

查找相关的方法,使用方式大致相同,但是略有区别。

1. find

查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.

语法格式:

S.find(sub[, start[, end]]) -> int

示例:

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.find('好风光'))  # 10 '好风光'第一次出现时,'好'所在的位置
print(mystr.find('你好'))  # -1  '你好'不存在,返回 -1
print(mystr.find('风', 12))  # 15 从下标12开始查找'风',找到风所在的位置试15
print(mystr.find('风光',1,10)) # -1 从下标1开始到12查找"风光",未找到,返回 -1
2. rfind

类似于 find() 函数,不过是从右边开始查找。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rfind('好')) # 14
3. index

find() 方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。

语法格式:

S.index(sub[, start[, end]]) -> int
4. rindex

类似于 index(),不过是从右边开始。


判断

Python提供了非常丰富的方法,可以用来对一个字符串进行判断。

1. startswith

判断字符串是否以指定内容开始。

语法格式:

S.startswith(prefix[, start[, end]]) -> bool

示例:

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.startswith('今'))  # True
print(mystr.startswith('今日')) # False
2. endswith

判断字符串是否以指定内容结束。

mystr = '今天天气好晴朗,处处好风光呀好风光"
print(mystr.endswith("风光"))  # True
print(mystr.endswith("好风光"))  # False

#### 3. isalpha

判断字符串是否全是字母字符。

```python
mystr = 'Hello'
print(mystr.isalpha())  # True

mystr = 'Hello123'
print(mystr.isalpha())  # False

4. isdigit

判断字符串是否全是数字字符。

mystr = '12345'
print(mystr.isdigit())  # True

mystr = '123abc'
print(mystr.isdigit())  # False

5. isalnum

判断字符串是否全是字母或数字字符。

mystr = 'Hello123'
print(mystr.isalnum())  # True

mystr = 'Hello!123'
print(mystr.isalnum())  # False

6. isspace

判断字符串是否全是空格字符。

mystr = '    '
print(mystr.isspace())  # True

mystr = ' Hello '
print(mystr.isspace())  # False


count

返回 strstartend 之间在 mystr 里面出现的次数。

语法格式:

S.count(sub[, start[, end]]) -> int

示例:

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.count('好'))  # 3. '好' 字出现三次

替换

替换字符串中指定的内容,如果指定次数 count ,则替换不会超过 count 次。

mystr = '今天天气好晴朗,处处好风光呀好风光'
newstr = mystr.replace('好', '坏')
print(mystr)  # 今天天气好晴朗,处处好风光呀好风光  原字符串未改变!
print(newstr)  # 今天天气坏晴朗,处处坏风光呀坏风光 得到的新字符串里,'好' 被修改成了 '坏'

newstr = mystr.replace('好', '坏', 2)  # 指定了替换的次数
print(newstr)  # 今天天气坏晴朗,处处坏风光呀好风光 只有两处的 '好' 被替换成了 '坏'

内容分隔

内容分隔主要涉及到 splitsplitlinespartitionrpartition 四个方法。

split

以指定字符串为分隔符切片,如果 maxsplit 有指定值,则仅分隔 maxsplit+1 个子字符串。返回的结果是一个列表。

mystr = '今天天气好晴朗,处处好风光呀好风光'
result = mystr.split()  # 没有指定分隔符,默认使用空格,换行等空白字符进行分隔
print(result)  # ['今天天气好晴朗,处处好风光呀好风光'] 没有空白字符,所以,字符串未被分隔

result = mystr.split('好')  # 以 '好' 为分隔符
print(result)  # ['今天天气', '晴朗,处处', '风光呀', '风光']

result = mystr.split("好", 2)  # 以 '好' 为分隔符,最多切割成 3 份
print(result)  # ['今天天气', '晴朗,处处', '风光呀好风光']

rsplit

用法和 split 基本一致,只不过是从右往左分隔。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rsplit('好', 1))  # ['今天天气好晴朗,处处好风光呀', '风光']

splitlines

按照行分隔,返回一个包含各行作为元素的列表。

mystr = 'hello \nworld'
print(mystr.splitlines())

partition

mystrstr 分割成三部分,str 前,strstr 后,三部分组成一个元组。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.partition('好'))  # ('今天天气', '好', '晴朗,处处好风光呀好风光')

rpartition

类似于 partition() 函数,不过是从右边开始。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rpartition('好'))  # ('今天天气好晴朗,处处好风光呀', '好', '风光')

修改大小写

修改大小写的功能只对英文有效,主要包括,首字母大写 capitalize ,每个单词的首字母大写 title ,全小写 lower ,全大写 upper

capitalize

第一个单词的首字母大写。

mystr = 'hello world'
print(mystr.capitalize())  # Hello world

title

每个单词的首字母大写。

mystr = 'hello world'
print(mystr.title())  # Hello World

lower

所有都变成小写。

mystr = 'hElLo WorLD'
print(mystr.lower())  # hello world

upper

所有都变成大写。

mystr = 'hello world'
print(mystr.upper())  # HELLO WORLD

空格处理

Python 为我们提供了各种操作字符串里表格的方法。

1. ljust

返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。

str = 'hello'
print(str.ljust(10))  # hello     在右边补了五个空格

2. rjust

返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。

str = 'hello'
print(str.rjust(10))  #      hello在左边补了五个空格

3. center

返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)。

str = 'hello'
print(str.center(10))  #  hello   两端加空格,让内容居中

4. lstrip

删除 mystr 左边的空白字符。

mystr = '    he   llo      '
print(str.lstrip())  # he   llo      只去掉了左边的空格,中间和右边的空格被保留

5. rstrip

删除 mystr 右边的空白字符。

mystr = '    he   llo      '
print(str.rstrip())  #    he   llo右边的空格被删除

6. strip

删除两断的空白字符。

str = '    he   llo      '
print(str.strip())  # he   llo

字符串拼接

把参数进行遍历,取出参数里的每一项,然后再在后面加上 mystr

语法格式:

S.join(iterable)

示例:

mystr = 'a'
print(mystr.join('hxmdq'))  # haxamadaq  把 hxmd 一个个取出,并在后面添加字符 a. 最后的 q 保留,没有加 a
print(mystr.join(['hi', 'hello', 'good']))  # hiahelloagood

作用:可以把列表或者元组快速地转变成为字符串,并且以指定的字符分隔。

txt = '_'
print(txt.join(['hi', 'hello', 'good']))  # hi_hello_good
print(txt.join(('good', 'hi', 'hello')))  # good_hi_hello

字符串运算符

字符串和字符串之间能够使用加法运算符,作用是将两个字符串拼接成为一个字符串。例如:'hello' + 'world' 的结果是 'helloworld'

字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如:'hello' * 2 的结果是 'hellohello'

字符串和字符串之间,如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较。

除上述几种运算符以外,字符串默认不支持其他运算符。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   80   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   65   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   38   0   0 Python
LyJBRSvfEdxZ