Python 之路字符串(五)

原创
林里克斯

Python 之路字符串(五)



1 字符串介绍

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

1.1 在 Python 里,可以用以下来表示字符串
  • 可以使用一对单引号 ' ';
    • eg: a = 'hello'
  • 可以是一对双引号" ";
    • eg: a = "hello"
  • 可以是一对三个单引号''' ''';
    • eg: a = '''hello'''
  • 可以是一对三个双引号""" """;
    • eg: a = """hello"""
1.2 转义
  • \' 表示一个普通的单引号
    • eg: a = 'I\'m good man'
  • \" 表示一个普通的双引号
    • eg: a = "I said: \"I am good man\""
  • \n 表示一个换行
>>> print('I am \n good man')
I am
good man
  • \t 表示一个制表符
>>> print('I am \t good man')
I am    good man
  • \\ 表示一个普通的反斜杠
>>> print('Hello\\nWrold!')
Hello\nWrold!
  • 在字符串前面加 r / R此字符串都表示是原生字符串
>>> print(r'I am \teacher')
I am \teacher

2 字符串的下标和切片

在计算机里,下标都是从 0 开始的。
# l i n l i k e s i
# 0 1 2 3 4 5 6 7 8
2.1 可以通过下标来获取或者修改指定位置的数据。
2.1.1取第 4 位字符
>>> word = 'linlikesi'
>>> print(word[4])
i
2.1.2 修改第 3 位字符
>>> num = [0, 1, 2, 3, 4]
>>> print(num[3])
3
#
>>> num[3] = 2      #将第3为修改为 2
>>> print(num)
[0, 1, 2, 2, 4]
#注意:字符串是不可变的数据类型,对于字符串的任何操作,都不会改变原有的字符串。
2.2 切片就是从字符串里复制一段指定的内容,生成一个新的字符串
2.2.1 切片语法

[start:end:step] 意为 开始:结束:步长(间隔)

切片包含头(start),不包含(end)

>>> word = 'linlikesi'
>>> print(word[2:5])
nli
# l i n l i k e s i
# 0 1 2 3 4 5 6 7 8
#不包含 'end' 5,所以输出不带 k,是 nli
2.2.2 只设置了 start,会截取到最后
>>> word = 'linlikesi'
>>> print(word[2:])
nlikesi
2.2.3 值设置 end,会从头开始截取
>>> word = 'linlikesi'
>>> print(word[:5])
linli
#任然是不包含 'end' k
2.2.4 step 为步长,理解为间隔。每隔 step-1 个取一次
>>> word = 'linlikesi'
>>> print(word[1:8:2])
ilks
#inlike [1:8] | ilks [1:8:2] 2-1 为 1 即为 隔一个取一个
2.2.5 步长默认为 1 ,不能为 0,可以为负数
>>> word = 'linlikesi'
>>> print(word[1:5:1])
inli

>>> word = 'linlikesi'
>>> print(word[8:5:-2])
ie
#step 为 负数是意为 从右往左取

>>> word = 'linlikesi'
>>> print(word[::])
linlikesi
#从左往右全取

>>> word = 'linlikesi'
>>> print(word[::-1])
isekilnil
#从右往左全取
2.2.6 如果 startend 如果是负数,表示从右边数
#  l  i  n  l  i  k  e  s  i
# -9 -8 -7 -6 -5 -4 -3 -2 -1
>>> word = 'linlikesi'
>>> print(word[-7:-2])
nlike
#从右到左,任然不取尾 'end'

3 字符串的常见操作(内置函数)

3.1 获取字符串长度函数 len
>>> word = 'linlikesi'
>>> print(len(word))
9
3.2 查找具体内容获取到指定内容字符的下标 find | index | rfind |rindex

如果有 2 个字符,返回第一个查找到得,查到第一个后就结束。查找返回的值都是 int 类型

3.2.1 find 函数
>>> word = 'linlikesi'
>>> print(word.find('k'))
5
#返回从左往右查找顺序中的第一个匹配到的,意最小
>>> word = 'linlikesi'
>>> print(word.find('l'))
0
3.2.2 index 函数
>>> word = 'linlikesi'
>>> print(word.index('k'))
5
3.2.3 find 和 index 的区别
>>> word = 'linlikesi'
>>> print(word.find('a'))
-1
# 使用 find 函数查找如果字符再字符串里不存在,会返回 -1

>>> word = 'linlikesi'
>>> print(word.index('a'))
Traceback (most recent call last):
  File "g:\Code\test\python\test1.py", line 2, in <module>
    print(word.index('a'))
ValueError: substring not found
#会报错,找不到所查的字符
3.2.4 rfind 函数
>>> word = 'linlikesi'
>>> print(word.rfind('l'))
3
#返回从右往左顺序遇到的第一个匹配到的,意最大
3.2.5 rindex 函数
>>> word = 'linlikesi'
>>> print(word.rfind('l'))
3
#区别于 index 和 find 一致,rfind 查不到会返回 -1,rindex 查不到会报错
3.3 判断 startswith | endswith | isalpha | isdigit |isalnum |isspace

is 开头都是判断,结果是 布尔 类型

3.3.1 startswith 判断字符串是否以指定内容开始
>>> word = 'linlikesi'
>>> print(word.startswith('l'))
True
#或这样写
>>> print('linlikesi'.startswith('l'))
True
3.3.2 endswith 判断字符串是否以指定内容结束
>>> print('linlikesi'.endswith('l'))
False
>>> print('linlikesi'.endswith('i'))
True
3.3.3 isalpha 判断字符串是否是纯字⺟
>>> print('linlikesi'.isalpha())
True
>>> print('l1i234n35l4i5kesi'.isalpha())
False
3.3.4 isdigit 判断字符串是否全是数字
>>> print('l1i234n35l4i5kesi'.isdigit())
False
>>> print('12343545'.isdigit())
True
#判断⼀个字符串是否是纯数字,只要出现⾮0~9的数字,结果就是False.
3.3.5 isalnum 判断是否由数字和字母组成
>>> print('qwe123'.isalnum())
True
>>> print('qwe'.isalnum())
True
>>> print('123'.isalnum())
True
>>> print('3.13'.isalnum())
False
#有字符和数字都可以,但不能有⾮数字和字⺟,不然返回 False
3.3.6 isspace 判断是否全部由空格组成
>>> print('        '.isspace())
True
>>> print('q      3'.isspace())
False
#必须全由空格组成,不然均返回 False
3.4 计算出现次数 count
>>> word = 'linlikesi'
>>> print(word.count('i'))
3
#计算 'i' 出现的次数
>>> print(word.count('ina'))
0
3.5 替换内容 replace
>>> word = 'hello'
>>> print(word.replace('l', 'x'))
hexxo
#替换全部匹配到的内容
>>> x = '我是大人'
>>> print(x.replace('大人', '小男孩'))
我是小男孩

>>> word = 'hello'
>>> print(word.replace('l', 'x', 1))
hexlo
#如果指定次数count,则替换不会超过 count 次。这里我指定了 count 为 1,则只替换一次
3.6 切割字符串,内容分割 split | rsplit | splitlines | partition | rpartition
3.6.1 split 可以将一个字符串切割成一个列表
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.split('-'))
['test', '1233', 'Jqiu', 'zhangshan', 'lisi']
#以 '-' 来切割 list 整个字符串

>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.split('-', 2))
['test', '1233', 'Jqiu-zhangshan-lisi']
#以 '-' 来切割后面的数字代表分割几个
3.6.2 rsplit 可以将一个字符串切割成一个列表,与 split 基本一致,区别在于有数字是从右开始分割
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.rsplit('-'))
['test', '1233', 'Jqiu', 'zhangshan', 'lisi']

>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.rsplit('-', 2))
['test-1233-Jqiu', 'zhangshan', 'lisi']
#从右边开始数起来再切割
3.6.3 splitlines 换行分割
>>> word = 'Hello \nWordld!'
>>> print(word.splitlines())
['Hello ', 'Wordld!']
#以换行符开始切割为列表
3.6.4 partition 指定一个字符串作为分隔符,分为三部分(前面 分隔符 后面)
>>> word = 'HelloWordld!'
>>> print(word.partition('W'))
('Hello', 'W', 'ordld!')
#会以 W 为分隔符将一个字符串分为三部分

>>> word = 'HelloWorWdld!'
>>> print(word.partition('W'))
('Hello', 'W', 'orWdld!')
#两个 W 得情况也只会以匹配到得第一个 W 作为分隔符

>>> word = 'HelloWordld!'
>>>print(word.partition('X'))
('HelloWordld!', '', '')
#如果指定的分隔符没有在字符串里,那会以整个字符串分割然后为空
3.6.5 rpartitionpartition 一直,如果有两个分隔符得情况,以最后一个最右一个分隔符开始分割
>>> word = 'HelloWorWdld!'
>>> print(word.partition('W'))
('HelloWor', 'W', 'dld!')
#往右开始算,也匹配到得第一个作为分隔符
3.7 修改大小写 capitalize | title | upper | lower
3.7.1 capitalize 第一个单词的首字母大写
>>> word = 'hello world!'
>>> print(word.capitalize())
Hello world!
#只将第一个单词的首字母大写,如果已大写不会更改
3.7.2 title 每个单词的首字母都大写
>>> word = 'hello world!'
>>> print(word.title())
Hello World!
3.7.3 upper 所有字母都变成小写
>>> word = 'HELLO WoRLD!'
>>> print(word.lower())
hello world!
#将所有大写字母都变成小写
3.7.4 lower 所有字母都变成小写
>>> word = 'HEeLLO World!'
>>> print(word.upper())
HEELLO WORLD!
#将所有小写字母都变成大写
3.8 空格处理 ljust | rjust | center | lstrip | rstrip | strip
3.8.1 ljust 返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)
>>> word = 'hello'
>>> print(word.ljust(10))
hello     #在右边补了五个空格,默认补空格,可以指定

>>> word = 'hello'
>>> print(word.ljust(10, '+'))
hello+++++
#指定 + 来补到指定的 10 个字符,而不是使用默认得空格
3.8.2 rjust 返回指定⻓度的字符串,并在左侧使⽤空⽩字符补全(右对⻬)。
>>> word = 'hello!'
>>> print(word.rjust(10))
     hello
#在左边补了五个空格
3.8.3 center 返回指定⻓度的字符串,并在两端使⽤空⽩字符补全(居中对⻬)
>>> word = 'hello!'
>>> print(word.center(10))
  hello  #两端加空格,让内容居中
3.8.4 lstrip 删除左边的空白字符
>>> word = '     hello!'
>>> print(word.lstrip())
>>> print(word)
hello
     hello
#将左边的空白符去掉

>>> word = '----hello-!-----'
>>> print(word.lstrip('-'))
hello-!-----
#也可以删除指定的字符
3.8.5 rstrip 删除右边的空白字符
>>> word = '     hello     '
>>> print(word.rstrip())
    hello
#将右边的空白符去掉
3.8.6 strip 删除两端的空白符
>>> word = '     hello     '
>>> print(word.strip())
hello
#将两端的空白字符删除
3.9 字符串拼接 join
>>> word = 'a'
>>> print(word.join('hello world'))
haealalaoa awaoaralad
#把参数进⾏遍历,取出参数⾥的每⼀项,然后再在后⾯加上指定内容。空格都会识别会字符添加。最后的 d 保留不会添加

>>> word = '-'
>>> print(word.join(('hello', 'world', '!')))
hello-world-!
#可以把元祖快速的转变为字符串,并且以指定的字符分隔、

#列表也可以
>>> word = '.'
>>> print(word.join(['hello', 'world', '!']))
hello.world.!

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

917 0 2022-04-19


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-27

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 216293 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!