zoukankan      html  css  js  c++  java
  • Python数据类型-02.字符串

    本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和

    请知悉:

    计算机中,一切皆为对象
    世界万物,皆为对象,一切对象皆可分类

    1.什么是字符串?

    类似"hello world"就是一个字符串

    定义:是一个有序的字符的集合,用于存储和表示基本的文字信息,一对单双或三引号中间包含的内容成为字符串

    注意:变量声明中,不加引号的字符串表示变量,name=jack 会出错

    2.字符串特点:

    有序,不可变
    字符串是特殊的元组,可以切片

    3.字符串的格式化输出

    字符串是 %s,整数 %d,浮点数%f

    name = "Jack"
    print ("I am %s,how are you?" %name)
    --->I am Jack,how are you?

    4.字符串的拼接和重复输出:

    1) 字符串拼接("万恶的加号 +")

    a = 'Helllo '
    b = 'world '
    print(a + b)
    --->'Hello world'

    注意:
    python中的字符串在C语言中体现为一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空间,一旦需要修改字符串,就需要再次开辟空间,会占用过多内存空间

    原理:

    使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a ,register PyObject * b),在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去。如果是n个字符串相连 那么会开辟n-1次内存,是非常耗费资源的。

    2) 重复输出字符串(*)

    name='jack '
    print(name*5)
    -->jack jack jack jack jack

    注意:“+”和“*”只能在字符串之间进行操作,不能跨数据类型

    3)str.join()

    连接2个字符串,可指定连接符号,常用

    a='hello '
    b='####'
    print(a.join(b))
    --->#hello #hello #hello #

    5.字符串常用方法:

    1) str.count()  # 字符数统计

    字符串统计

    s = 'Hello World'
    print(s.count('o'))
    --->2

    2) str.strip()   # 格式化输出

    删除字符串两边的指定字符,默认为空格, 为tab, 为换行符

    s = 'Hello World    '
     s.strip()
    --->'Hello World'

    3) str.lstrip()   # 格式化输出

    删除字符串左边的指定字符,默认为空格

    s = '    hello    '
    s.lstrip()
    --->'hello    '

    4) str.rstrip()  # 格式化输出

    删除字符串右边指定字符,默认为空格

    s='    hello    '
    s.rstrip()
    --->'    hello'

    5) str.index 和str.find    # 查找索引

    功能相同,区别在于find()查找失败会返回-1,不会影响程序运行。
    一般用find!=-1或者find>-1来作为判断条件。
    str.find:检测字符串中是否包含子字符串str,可指定范围

    s='hello world'
    print(s.find('l'))        # 第一个索引为2
    --->2
    print(s.find('x'))    # 找不到返回-1
    --->-1

    str.index:检测字符串中是否包含子字符串str,可指定范围

    s='hello world'
    print(s.index('l'))
    -->2
    print(s.index('x'))
    -----返回------
    Traceback (most recent call last):
      File "D:/PyProjects/1.svndata/test.py", line 32, in <module>
        print(s.index('x'))
    ValueError: substring not found

    6) str.len()   #字符串长度

    s = 'hello world'
    print(len(s))
    --->11

    7) "str" in | "str" not in    # 测试是否包含

    是否包含指定字符串

    s = 'hello world'
    print('hello' in s)
    --->True
    print('123' not in s)
    --->True

    8) 字符串中字母大小写转换

    8.1) str.lower()   # 转换为小写

    s = 'Hello World'
    print(s.lower())
    --->hello world

    8.2) str.upper()   # 转换为大写

    s = 'Hello World'
    print(s.upper())
    --->HELLO WORLD

    8.3) str.swapcase()   # 大小写互换

    s = 'Hello World'
    print(s.swapcase())
    --->hELLO wORLD

    9) str.center()   # 将字符串居中

    可指定字符串长度以及两边填充的字符

    s = 'hello world'
    print(s.center(40, '*'))
    --->**************hello world***************

    10) 字符串的测试、判断函数

    这类函数在string模块中没有,且返回的都是布尔值

    str.isdigit()                  # 是否全是数字,并至少有一个字符
    str.isalpha()                  # 是否全是字母,并至少有一个字符
    str.isspace()                  # 是否全是空白字符,并至少有一个字符
    str.isalnum()                  # 是否全是字母和数字,并至少有一个字符
    str.islower()                  # Str中的字母是否全是小写
    str.isupper()                  # Str中的字母是否全是大写
    str.istitle()                  # Str是否是首字母大写的
    str.startswith("hehe")         # 是否以hehe开头
    str.endswith("haha")         # 是否以haha结尾

    6. 字符串切片

    str = '0123456789'
    print(str[0:3])            # 截取第一位到第三位的字符
    print(str[:])                # 截取字符串的全部字符
    print(str[6:])              # 截取第七个字符到结尾
    print(str[:-3])             # 截取从头开始到倒数第三个字符之前
    print(str[2])              # 截取第三个字符
    print(str[-1])              # 截取倒数第一个字符
    print(str[::-1])             # 创造一个与原字符串顺序相反的字符串
    print(str[-3:-1])            # 截取倒数第三位与倒数第一位之前的字符
    --->78
    print(str[-3:])             # 截取倒数第三位到结尾
    print(str[:-5:-3])            # 逆序截取,截取倒数第五位数与倒数第三位数之间
    --->96

    注意:
    1)字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。
    2)任何上面的函数改变了字符串后,都会返回一个新的字符串,但是原字串并没有变。
    3)字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如字符串[下标])
    4)下标(索引值)从左边,从0开始,最大下标值是字符串长度减1,即len(string) - 1

    拓展:什么是可变和不可变的数据类型:

    1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
    2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

    ---------- 完毕,呵呵呵呵 -----------

  • 相关阅读:
    Shell中的特殊变量和结构
    自由的Debian
    关于系统定制的一些链接
    超出两行显示省略号
    json转换
    区分LocalStorage和偏好数据
    去除谷歌浏览器中的默认文本框样式
    js访问xml
    js执行跨域请求
    mvc通过controller创建交互接口
  • 原文地址:https://www.cnblogs.com/tssc/p/9362489.html
Copyright © 2011-2022 走看看