Python连载(0004): 基本数据类型之字符串

什么是字符串?

在Python中,加了引号的字符都被认为是字符串。

name_1 = 'Old Wang'	# 使用单引号创建字符串

name_2 = "Old Wang"	# 使用双引号创建字符串

name_3 = '''Old Wang'''	# 使用三个单引号创建字符串

name_4 = """Old Wang""" # 使用三个双引号创建字符串

从上面的例子可以看出,单引号、双引号、三个单引号、三个双引号都可以用来创建字符串,那平时写代码的时候到底用哪个呢?

  • 如果字符串的内容只有一行,那考虑用单引号或者双引号。

    • 如果字符串的文本里包含单引号,比如Hello, I'm Old Wang.,那么创建字符串的时候就需要用双引号。

      string_example = "Hello, I'm Old Wang"
      

      image-20210118143848076

    • 如果字符串的文本里包含双引号,比如他说:"大家好,我是老王",那么创建字符串的时候就需要用双引号。

      string_example = '他说:"大家好,我是老王"'
      

      image-20210118143916667

  • 如果字符串的内容有多行,那考虑用三个单引号(''')或者三个双引号("""

    string_example = """这是一个多行注释,
    这是第一行,
    这是第二行,
    这是第三行
    """
    

    image-20210118151311708

    string_example = '''这是一个多行注释,
    这是第一行,
    这是第二行,
    这是第三行
    '''
    

    image-20210118151405000

字符串运算

字符串拼接

使用加号+可以把两个字符串拼接起来,例如:

string_1 = "我是第一个字符串。"
string_2 = "我是第二个字符串。"

string_3 = string_1 + string_2	# 字符串变量string_3等于将string_1和string_2两个字符串拼接起来
print(string_3)

image-20210118152112588

重复输出字符串

如果我们要创建一个有规律的字符串,比如:123412341234123412341234重复5次),那么可以用乘号*运算符快速生成,例如:

string_example = "1234" * 5
print(string_example)

image-20210118153254169

提取字符串的一个或者一段字符

假设有一个字符串:1. 疫情期间禁止串门。,我们现在想要提取1串门这两个信息(1表明这是第几条,串门表明禁止的行为),该怎么办?

要搞定这个问题,首先要知道一个概念:索引

Python对字符串的每个字符都有一个标号,称为索引下标,用于表明字符在整个字符串中的位置,例如:

image-20210118162434970

  • 索引是有方向的,正向索引是从第一个字符开始,反向索引是从最后一个字符开始。
  • 正向索引时,索引值(或下标)是从0开始的,也就是说,第一个字符的索引值是0。
  • 反向索引使,索引值(或下标)是从**-1**开始的,也就是说,最后一个字符的索引值是-1。
  • 空格也算一个字符。

如果想要提取字符串变量中的某一个字符,可以采用变量名[下标]的形式,例如:

image-20210118161640450

如果想要提取字符串变量中的某一段字符,可以采用变量名[起始下标:截止下标+1]的形式,例如我们要提取串门这两个字符,起始下标就是这个字符的下标9,截止下标就是这个字符的下标10,编码如下:

image-20210118162646225

判断字符串中是否包含某个或者某段特定字符

假设有一个字符串:大家好,我是老王,我们想通过程序判断一下这个字符串里是不是包含老王这个词,那么可以使用in运算符,例如:

image-20210118153902285

你看,因为字符串里包含老王这个词,所以,使用in运算符判定的结果就是True,表明老王在字符串里。

同时,还有一个not in运算符:

image-20210118154136707

not in的意思是:老王是不是不在给定字符串里,如果不在,那么运行的结果就是True,如果在,那么运行结果就是False

确认某个或某段字符在字符串中的位置

如果一个字符串很长,我们需要确认某个字符或者某一段字符在整个字符串的位置,难道我们只能傻傻的手动查吗?万一这个字符串有几百个字符,那岂不是很坑?

Python的字符串提供了一个称为index()的方法,官方说明如下:

Help on built-in function index:

index(...) method of builtins.str instance
    S.index(sub[, start[, end]]) -> int
    
    Return the lowest index in S where substring sub is found,
    such that sub is contained within S[start:end].  Optional
    arguments start and end are interpreted as in slice notation.
    
    Raises ValueError when the substring is not found.

这个index()的功能如下:

  • 在指定的字符串中查询给定的某一个字符或者某一段字符的位置,也就是第一次出现时对应的下标。
  • 默认情况下,它是从字符串的第一个字符开始查找的,而且查到第一个符合条件的字符就停止查找了。
  • 如果要查找的字符在该字符串中不存在,则程序运行会出错。
  • 可以指定在字符串的某个位置开始查找(默认是从第一个字符的位置开始查找)。
  • 可以指定查找到哪一个位置结束(默认情况下,如果一直没有找到符合条件的字符,那么index一直会查找到整个字符串的最后一个字符)。

image-20210118164654227

为了避免程序运行出错,这个index()方法最好和in运算配合使用,先试用in判断要查找的字符是否包含在字符串中,如果不包含,那就没有使用index()的必要了。

image-20210118162434970

如果我们想要在疫情期间禁止串门这一段字符中查找禁止这两个字符的位置,应该怎么办?从上图中,我们知道字的下标是3,字的下标是10,那么可以使用下面的方法:

image-20210118165135783

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值