美文网首页
Python-数据类型-字符串

Python-数据类型-字符串

作者: crossWuchang | 来源:发表于2020-04-07 22:09 被阅读0次

    数据类型-字符串

    字符串是 python最常见的基本数据类型之一,常见的定义方式是一对单引号( '……')或者一对双引号 ("……")创建,多行字符串也可使用三单引号或者三双引号定义。

    1. 特点

    • 不可变类型: 在元素定义之后不能对其进行修改,否则会报错
    • 可以进行切片和索引操作: 索引下标从开始

    示例

    a = "hello world"
    b = 'hello python'
    print(type(a), type(b))
    

    print(type(a), type(b)) 打印输出结果显示<class 'str'> <class 'str'>,可以看出a变量和b变量的类型都是str字符串,type内置函数用来查看变量或者对象的类型。

    2. 索引 和 切片

    下标又叫索引,用来记录元素的位置,方便通过下标快速找出对应的的数据,字符串的下标是从 0 开始,在使用过程中要注意索引越界问题
    语法
    序列[索引位置]
    示例

    print(a[0])
    print(a[1])
    

    如果索引值超过字符串的长度,程序会抛出错误IndexError: string index out of range

    切片是指对操作的对象截取一部分切片索引越界不会报错,如果超过元素的最大索引,就按最大索引返回
    语法
    序列[开始位置下标:结束位置下标:步长]

     name = "abcdefg"
    
    print(name[2:5:1])    # cde
    print(name[2:5])      # cde
    print(name[:5])       # abcde
    print(name[1:])       # bcdefg
    print(name[:])        # abcdefg
    print(name[::2])      # aceg
    print(name[:-1])      # abcdef, 负1表示倒数第一个数据
    print(name[-4:-1])    # def
    print(name[::-1])     # gfedcba
    
    1. 切片满足含头不含尾的规则,正负数都是一样
    2. 步长可选参数,如果不传,默认为1自增

    3. 字符串格式

    3.1 %号占位符

    字符串具有一种特殊的内置操作:使用 % (取模) 运算符。 这也被称为字符串的 格式化 或 插值 运算符。

    转换符 描述
    d 有符号十进制整数
    i 有符号十进制整数
    o 有符号八进制数
    f 浮点十进制格式
    r 字符串(使用repr()转换任何 Python 对象)
    s 字符串(使用str()转换任何 Python 对象)
    a 字符串(使用ascii()转换任何 Python 对象)
    % 不转换参数,在结果中输出一个 '%' 字符
    age = 18
    name = 'TOM'
    weight = 75.5
    stu_id = 1
    stu_id2 = 1000
    
    # 1. 今年我的年龄是x岁 -- 整数 %d
    print('今年我的年龄是%d岁' % age)
    # 结果: 今年我的年龄是18岁
    
    # 2. 我的名字是x -- 字符串 %s
    print('我的名字是%s' % name)
    # 结果:我的名字是TOM
    
    # 3. 我的体重是x公斤 -- 浮点数 %f
    print('我的体重是%.3f公斤' % weight)
    # 结果: 我的体重是75.500公斤
    
    # 4. 我的学号是x -- %d
    print('我的学号是%d' % stu_id)
    # 结果: 我的学号是1
    
    # 4.1 我的学号是001
    print('我的学号是%03d' % stu_id)
    print('我的学号是%03d' % stu_id2)
    # 结果: 我的学号是001
    # 结果: 我的学号是1000
    
    
    # 5. 我的名字是x,今年x岁了
    print('我的名字是%s,今年%d岁了' % (name, age))
    # 结果: 我的名字是TOM,今年18岁了
    
    # 5.1 我的名字是x,明年x岁了
    print('我的名字是%s,明年%d岁了' % (name, age + 1))
    # 结果: 我的名字是TOM,明年19岁了
    
    # 6. 我的名字是x,今年x岁了,体重x公斤,学号是x
    print('我的名字是%s,今年%d岁了,体重%.2f公斤,学号是%06d' % (name, age, weight, stu_id))
    # 结果: 我的名字是TOM,今年18岁了,体重75.50公斤,学号是000001
    

    3.2 字符串的 format() 方法

    age = 18
    name = 'TOM'
    weight = 75.5
    stu_id = 1
    stu_id2 = 1000
    
    print('我的名字是{},今年{}岁了,体重{}公斤,学号是{}'.format(name, age, weight, stu_id))
    print('我的名字是{name},今年{age}岁了,体重{weight}公斤,学号是{stu_id}'.format(stu_id=stu_id, weight=weight, name=name, age=age))
    

    花括号和其中的字符(称为格式字段)将替换为传递给 str.format()方法的对象。花括号中的数字可用来表示传递给 str.format() 方法的对象的位置。

    3.3 f {} 格式字符串

    age = 18
    name = 'TOM'
    weight = 75.5
    stu_id = 1
    stu_id2 = 1000
    
    print(f'我的名字是{name},今年{age}岁了,体重{weight}公斤,学号是{stu_id}'))
    

    f 格式字符串的方法可以说就是str.format()方法的简写形式

    4 字符串常用方法

    4.1 查找

    对于字符串来说,查找一个元素的位置应该经常使用的,查找就是找出元素在在字符串中出现的位置或者出现的次数

    • find(): 检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,不存在则返回-1
      语法
      字符串序列.find(子串, 开始位置下标, 结束位置下标)
      示例
    mystr = "hello world and itcast and itheima and Python"
    print(mystr.find('and'))  # 12
    print(mystr.find('and', 15, 30))  # 23
    print(mystr.find('ands'))  # -1
    

    开始位置下标结束位置下标都是可以省略的,不传递参数默认就是在整个字符串中查找

    • index(): 检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,不存在则报异常
      语法
      字符串序列.index(子串, 开始位置下标, 结束位置下标)
      示例
    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.index('and'))              # 12
    print(mystr.index('and', 15, 30))      #  23
    print(mystr.index('ands'))             # 报错 ValueError:
    
    • rfind(): 和find()功能相同,但查找方向为 右侧 开始。
    • rindex():和index()功能相同,但查找方向为 右侧 开始。
    • count():返回某个子串在字符串中出现的次数
      语法
      字符串序列.count(子串, 开始位置下标, 结束位置下标)
      示例
    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.count('and'))          # 3
    print(mystr.count('ands'))         # 0
    print(mystr.count('and', 0, 20))   # 1
    

    4.2 修改

    字符串是不可变类型,修改指的是通过函数的形式修改字符串中的数据

    • replace():替换
      语法
      字符串序列.replace(旧子串, 新子串, 替换次数)
      示例
    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.replace('and', 'he'))
    # 结果:hello world he itcast he itheima he Python
    
    print(mystr.replace('and', 'he', 10))
    # 结果:hello world he itcast he itheima he Python
    
    print(mystr)
    # 结果:hello world and itcast and itheima and Python
    

    替换次数可以不传,默认就是全部字符串中匹配上了就改变, 如果传入替换次数,查出子串出现次数,则替换次数为该子串出现次数

    数据按照是否能直接修改分为可变类型不可变类型两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。

    • split():按照指定字符分割字符串。

    语法
    字符串序列.split(分割字符, num)

    num表示的是分割字符出现的次数,即将来返回数据个数为num+1个

    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.split('and'))
    # 结果:['hello world ', ' itcast ', ' itheima ', ' Python']
    
    print(mystr.split('and', 2))
    # 结果:['hello world ', ' itcast ', ' itheima and Python']
    
    print(mystr.split(' '))
    # 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python']
    
    print(mystr.split(' ', 2))  
    # 结果:['hello', 'world', 'and itcast and itheima and Python']
    
    

    如果分割字符是原有字符串中的子串分割后则丢失该子串

    • join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串。

    语法
    字符或子串.join(多字符串组成的序列)
    示例

    list1 = ['I', 'love', 'you']
    t1 = ('aa', 'b', 'cc', 'dd')
    
    print('_'.join(list1))
    # 结果:I_love_you
    
    print('...'.join(t1))
    # 结果:aa...b...cc...ddd
    
    • capitalize():将字符串第一个字符转换成大写。

    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.capitalize())
    # 结果:Hello world and itcast and itheima and python
    

    capitalize()函数转换后,只字符串第一个字符大写,其他的字符全都小写

    • title():将字符串每个单词首字母转换成大写

    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.title())
    # 结果:Hello World And Itcast And Itheima And Python
    
    • lower():将字符串中大写转小写

    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.lower())
    # 结果:hello world and itcast and itheima and python
    
    • upper():将字符串中小写转大写

    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.upper())
    # 结果:HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON
    
    • lstrip():删除字符串左侧空白字符。
    • rstrip():删除字符串右侧空白字符。
    • strip():删除字符串两侧空白字符。
    • ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串

    语法
    字符串序列.ljust(长度, 填充字符)
    示例

    mystr = 'hello'
    mystr1 = mystr.ljust(10, '.')
    
    print(mystr1)
    # 结果:hello.....
    
    • rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串,语法和ljust()相同。
    • center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串,语法和ljust()相同。

    示例

    mystr = 'hello'
    mystr1 = mystr.center(10, '.')
    
    print(mystr1)
    # 结果: ..hello...
    

    4.3 判断

    判断是指符合条件与否,返回的结果是布尔类型即True或者False

    • startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。

    语法
    字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
    示例

    mystr = "hello world and itcast and itheima and Python   "
    
    print(mystr.startswith('hello'))
    # 结果:True
    
    print(mystr.startswith('hello', 5, 20))
    # 结果False
    
    • endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。

    语法
    字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
    示例

    mystr = "hello world and itcast and itheima and Python"
    
    print(mystr.endswith('Python'))
    # 结果:True
    
    print(mystr.endswith('python'))
    # 结果:False
    
    print(mystr.endswith('Python', 2, 20))
    # 结果:False
    
    • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
      示例
    mystr1 = 'hello'
    mystr2 = 'hello12345'
    
    print(mystr1.isalpha())
    # 结果:True
    
    print(mystr2.isalpha())
    # 结果:False
    
    • isdigit():如果字符串只包含数字则返回 True 否则返回 False
      示例
    mystr1 = 'aaa12345'
    mystr2 = '12345'
    
    print(mystr1.isdigit())
    # 结果: False
    
    print(mystr2.isdigit())
    # 结果:False
    
    • isalnum():如果字符串至少有一个字符并且所有字符都是字母数字则返 回 True,否则返回 False

    示例

    mystr1 = 'aaa12345'
    mystr2 = '12345-'
    
    print(mystr1.isalnum())
    # 结果:True
    
    print(mystr2.isalnum())
    # 结果:False
    
    • isspace():如果字符串中只包含空白,则返回 True,否则返回 False
    mystr1 = '1 2 3 4 5'
    mystr2 = '     '
    
    print(mystr1.isspace())
    # 结果:False
    
    print(mystr2.isspace())
    # 结果:True
    

    相关文章

      网友评论

          本文标题:Python-数据类型-字符串

          本文链接:https://www.haomeiwen.com/subject/weznphtx.html