美文网首页
Python基础--字符串

Python基础--字符串

作者: 琰雪儿 | 来源:发表于2021-05-06 22:41 被阅读0次

    上节中我们了解到了Python中的字符串的定义方式与JavaScript类似。通过由单引号'或双引号"括起。本节中我们进一步了解关于Python字符串的函数。
    Python中代码是以换行为结束标志的。与Java等语言中使用的分号;不同。

    一、多行字符串

    Python中可以通过三对单引号'或者双引号"来实现多行字符串。在结果中,换行符插入与代码中相同的位置。

    单行与多行字符串

    同时在第一节中,我们讲到,多行字符串也可以用来做多行注释。同时它最多的用途就是用于多行注释时使用。

    二、字符串即是数组

    Python中没有字符数据类型,单个字符就是长度为 1 的字符串。Python中的字符串本质就是一个Unicode字符数组。所以Python中字符串中的某个字符,可以像数组一样通过下标索引来取得单个字符。同时Python支持负索引。与其他语言一样,Python的正向索引是从前到后,下标是从0开始的。而它的负向索引则是从后到前,下标从-1开始的。

    str = "12345"
    
    字符 1 2 3 4 5
    正索引 0 1 2 3 4
    负索引 -5 -4 -3 -2 -1
    字符串索引

    在输出的数据足够多的时候,我们可以使用代码替换符来格式化输出简化输出,这一点与大学学习的C语言很像。类似于Java中的System.out.println(),因为它默认带一个换行操作。

    三、字符串截取

    字符串截取从开始索引和结束索引,以冒号分隔,以返回字符串的一部分。遵循包左不右的原则。

    >>> subStr = "Hello world"
    >>> print(subStr[2: 5])
    llo
    

    这里可以同时使用正索引和负索引,但是需要注意结束索引不能在开始索引之前,否则永远都是空字符串。

    >>> str = "hello wolrd!"
    >>> str[2:1]
    ''
    >>> str[2:-1]
    'llo wolrd'
    >>> str[2:-9]
    'l'
    >>> str[2:-10]
    ''
    

    只缺省开始索引默认起始位置是0,缺省结束索引,默认截取从开始索引以后的所有字符。同时缺省开始索引和结束索引时,表示截取整个字符串。

    >>> str = "hello wolrd!"
    >>> str[:3]
    'hel'
    >>> str[2:]
    'llo wolrd!'
    >>> str[:]
    'hello wolrd!'
    

    四、字符串拼接

    字符串的拼接通过+号拼接或者格式化的方式拼接。

    1.通过+号拼接

    >>> subStr = "Hello world"
    >>> joinStr = "join"
    # 字符串拼接
    >>> print(subStr + " " + joinStr)
    Hello world join
    

    2.字符串格式化

    ①字符串格式化符号

    Python中,字符串格式化的语法与Csprintf函数的语法相同。

    # 这里只是借助print()函数输出内容而已。
    >>> print("我是%s,正在%s的学习中,今天是第%d天" % ("yanxueer","python",1))
    我是yanxueer,正在python的学习中,今天是第1天
    
    >>> "我是%s,正在%s的学习中,今天是第%d天" % ("yanxueer","python",1)
    '我是yanxueer,正在python的学习中,今天是第1天'
    
    符号 描述
    %c 格式化字符及其ASCII码
    %s 格式化字符串
    %d 格式化整数
    %u 格式化无符号整型
    %o 格式化无符号八进制数
    %x 格式化无符号十六进制数
    %X 格式化无符号十六进制数(大写)
    %f 格式化浮点数字,可指定小数点后的精度
    %e 用科学计数法格式化浮点数
    %E 作用同%e,用科学计数法格式化浮点数
    %g %f%e的简写
    %G %f%E 的简写
    %p 用十六进制数格式化变量的地址

    format()函数:接受一个格式字符串和任意一组位置和关键字参数。将{}替换为值。

    # format()函数
    >>> formatStr = "我是{},正在{}的学习中 "
    >>> print(formatStr.format("yanxueer", "python"))
    我是yanxueer,正在python的学习中
    
    • 也可以指定参数顺序,按位置访问参数:
    >>> '{0}{1}{2}'.format('yan', 'xue','er')
    'yanxueer'
    >>> '{1}{2}-{0}'.format('yan', 'xue','er')
    'xueer-yan'
    >>> '{2}{0}{1}'.format('yan', 'xue','er')
    'eryanxue'
    
    >>> '{0}, {1}, {2}'.format(*'abc')
    'a, b, c'
    

    它到本质是替代,用0代替了传入到参数,但是实质仍然是参数本身,所以它也具有参数应该具有到特性以及拥有它们到函数。所以:

    >>> '{0[0]}{1}{2}'.format('yan', 'xue','er')
    'yxueer'
    
    • 按名称访问参数:
    >>> "我是{ya}{xe}{er}".format(ya="yan",xe = "xue", er = "er")
    '我是yanxueer'
    

    对齐文本以及指定宽度:一个指定的宽度的字符串,默认填充的字符为空格。

    >>> '{:<30}'.format('left aligned')
    'left aligned                  '
    >>> '{:>30}'.format('right aligned')
    '                 right aligned'
    >>> '{:^30}'.format('centered')
    '           centered           '
    >>> '{:*^30}'.format('centered') 
    '***********centered***********'
    

    ③f-string:字面量格式化字符串

    f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。

    >>> str ="world"
    >>> f"hello {str}"
    'hello world'
    >>> f"{1+2}"
    '3'
    

    五、利用制表符或换行符来添加空白

    # 制表符
    >>> print("\t hello")
             hello
    # 换行符
    >>> print("hello\nworld")
    hello
    world
    
    Python 转义字符
    转义字符 描述
    \(在行尾时) 续行符
    \\ 反斜杠符号
    \' 单引号
    \" 双引号
    \a 响铃
    \b 退格(Backspace)
    \e 转义
    \000
    \n 换行
    \v 纵向制表符
    \t 横向制表符
    \r 回车
    \f 换页
    \oyy 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
    \xyy 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行
    \other 其它的字符以普通格式输出

    六、原始字符串和Unicode 字符串

    1.原始字符串:在引号前添加 r 或 R 的字符串。

    原始字符串会忽略所有的特殊的转义文字等

    >>> print('\u6666')
    晦
    >>> print(r'\u6666')
    \u6666
    >>> print('yan \n xueer')
    yan
     xueer
    >>> print(r'yan \n xueer')
    yan \n xueer
    

    2.Unicode 字符串

    在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
    Python3中,所有的字符串都是Unicode字符串。所以带不带u无所谓。

    >>> '\u6666'
    '晦'
    >>> u'\u6666'
    '晦'
    

    七、删除空白

    关于删除空白,Python提供了三种不同的删除场景。分别是删除末尾空白rstrip()删除开头空白lstrip()删除两端空白strip()

    1.删除末尾空白

    # 删除末尾空白
    >>> stripStr = " python "
    >>> print(stripStr.rstrip())
     python
    

    2.删除开头空白

    >>> stripStr = " python "
    >>> print(stripStr.lstrip())
    python 
    

    3.删除两端空白

    >>> stripStr = " python "
    >>> print(stripStr.strip())
    python
    

    八、修改字符串的大小写

    1.将字符串的第一个字符转换为大写

    >>> "yan xueer".capitalize()
    'Yan xueer'
    

    2.单词首字母大写:只有不是连续字符,中间被任何字符分割,空格,逗号,引号等。

    >>> str = "hello wolrd!"
    >>> str.title()
    'Hello Wolrd!'
    

    3.全部大写

    >>> str = "hello wolrd!"
    >>> str.upper()
    'HELLO WOLRD!'
    

    4.全部小写

    >>> str = "HELLO WOLRD!"
    >>> str.lower()
    'hello wolrd!'
    

    九、查找字符串

    1. find():语法find(str, beg=0, end=len(string))返回目标字符在字符串中的首次出现的索引位置。如果没有找到对应的索引位置,则返回-1。

    >>> "yanxueer".find("e")
    5
    >>> "yanxueer".find("e",3,8)
    5
    >>> "yanxueer".find("e",3,5)
    -1
    >>> "yanxueer".find("z")
    -1
    

    2.index():语法index(str, beg=0, end=len(string))返回目标字符在字符串中的首次出现的索引位置。如果没有找到对应的索引位置,则报一个异常。

    >>> "yanxueer".index("e")
    5
    >>> "yanxueer".index("e",3,8)
    5
    >>> "yanxueer".index("e",3,5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found
    >>> "yanxueer".index("z")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found
    

    3. count():语法count(sub, start= 0,end=len(string)) 返回目标字符在字符串里出现的次数。

    >>> "yanxueer".count("xue")
    1
    >>> "yanxueer".count("e")
    2
    >>> "yanxueer".count("z")
    0
    

    4. 通过字符串操作符 in: 存在返回True不存在返回False

    >>> "xue" in "yanxueer"
    True
    >>> "xe" in "yanxueer"
    False
    

    十、字符串替换

    replace():语法replace(old, new[, max]),不指定次数默认全部替换。

    >>> "yanxueer".replace("e","a",1)
    'yanxuaer'
    >>> "yanxueer".replace("e","y")
    'yanxuyyr'
    

    十一、分割字符串

    split():语法split(str="", num=string.count(str))。设置分割次数默认为 -1, 即分隔所有。默认分割为空格

    >>> "yan xue er".split()
    ['yan', 'xue', 'er']
    >>> "yan-xue-er".split("-")
    ['yan', 'xue', 'er']
    >>> "yan xue er".split(" ",2)
    ['yan', 'xue', 'er']
    >>> "hello yan xue er ".split(" ",2)
    ['hello', 'yan', 'xue er ']
    

    十二、join()方法:用于将序列中的元素以指定的字符连接生成一个新的字符串。

    >>> "-".join("yanxueer")
    'y-a-n-x-u-e-e-r'
    # 也可以是字符列表或元组
    >>> "-".join(["23","32","32","32"])
    '23-32-32-32'
    >>> "-".join(("23","32","32","32"))
    '23-32-32-32'
    

    十三、字符编码

    ord()函数获取字符的Unicode编码的整数值,chr()函数把Unicode编码的整数值转换为对应的字符。

    # ord()函数
    >>> ord('晦')
    26214
    # hex()将整数转换为以“0x”为前缀的小写十六进制字符串
    >>> hex(ord('晦'))
    '0x6666'
    
    # chr()函数
    >>> chr(0x6666)
    '晦'
    >>> chr(26214)
    '晦'
    

    关于常用的字符串操作就到这里,参照官方文档查看更多...

    每日一言
    任何时候醒悟都为时不晚,最好的时机是之前,其次是现在。

    相关文章

      网友评论

          本文标题:Python基础--字符串

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