Python—字符串

    xiaoxiao2022-07-12  154

    字符串

    在讲字符串之前,先了解两个pycharm常用的快捷键:

    Ctrl + D :快速复制光标所在行的内容到光标所在行的下一行Ctrl + Y :快速删除光标所在行的内容Ctrl + / :对选中的代码行进行注释,会在所选代码行前快速加#(需要提前选中要注释的代码)

    1.字符串的创建和赋值

    字符串类型是 Python 里面最常见的类型。 可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它。

    例如:第一种方式:     str1 = 'our company is westos'

    第二种方式:     str2 = "our company is westos"

    第三种方式:     str3 = """our company is westos"""

    在这里尤其要注意这个三引号,三引号在pycharm中有两个作用:

    1)定义多行字符串:为避免使用转义换行符 \n,通常会用在定义SQL语句的表达式中没有变量的时候使用。

    例如:

    2)进行多行注释:Python中单行注释是#,多行注释的时候每行都写一个#,或者采用连续的三个双引号。

    例如:

    在打印字符串时,可能会碰到不可打印的字符串,这时就需要用到转义符号。

    转义符号:一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符。

    下面是几个经常会用到的转义字符总结:

    例如:

    * 删除字符和字符串(了解)

    字符串是不可变的,只能通过赋一个空字符串或者使用 del 语句来清空或者删除一个字符串,但是没有必要显式的删除字符串。定义这个字符串的代码结束时会自动释放这些字符串。


    2.字符串的基本特性

    1)连接符( + ), 重复操作符( * ),计算长度

    连接操作符: 从原有字符串获得一个新的字符串,用 ‘+’ 将两个要连接的字符串连接起来。

    重复操作符: 创建一个包含了原有字符串的多个拷贝的新串,用 ‘*’ 后加数字表示重复的次数。

    计算长度:用len( )函数可以计算字符串的长度。

    例如:

     

    2)序列操作符(索引与切片)

    索引(s[i] ):获取特定偏移的元素。字符串中的每一个字符都对应着一个索引值,直接输入索引值就可以输出对应的字符。索引分为正向索引和反向索引两类,正向索引下第一个字符的索引值为0,反向索引下最后一个字符的索引值为-1

                                                         

    例如:

    # 索引 str = 'abcd hello' # 正向索引 print(str[0]) print(str[2]) print(str[3]) # 反向索引 print(str[-1])

    输出结果为:

    切片S[i:j]:提取对应的部分作为一个序列。这个序列以第i个字符开始,到第 j-1 个字符结束。

     如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;s[::-1]是实现字符串反转的一种方法。

    例如:

     

    3)成员操作符(in ,not in)

    成员操作符用于判断一个字符或者一个子串(中的字符)是否出现在另一个字符串中。

    出现则返回 True,否则返回 False。

    例如:

     

    4)string 模块预定义的字符串:

    总结一些常用的如下:

    ① string.ascii_letters     所有的字母(大小写都有)

    打印结果:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

    ② string.ascii_lowercase     所有的小写字母

    打印结果:'abcdefghijklmnopqrstuvwxyz'

    ③ string.ascii_uppercase     所有的大写字母

    打印结果:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    ④ string.digits     所有的数字

    打印结果:'0123456789'

    ⑤ string.whitespace     所有的空白符

    打印结果:'\t\n\x0b\x0c\r

    ⑥ string.punctuation     所有的特殊字符

    打印结果:'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'


    练习(验证回文串)

    下面有一个实际案例来综合应用以上的内容知识

    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

    说明:本题中,我们将空字符串定义为有效的回文串。

    参考代码如下:

    import string str = input("请输入验证的字符串:") if len(str) == 0: print(True) else: # 将字符串转成小写字母, 忽略大小写; str = str.lower() # 创建一个变量cleanStr, 保存清洗过后的字符串; cleanStr = '' # 依次遍历所有的字符串元素 for item in str: # 判断是否为字母或者数字, 如果是,加入到cleanStr; if item in string.ascii_letters + string.digits: cleanStr += item print("清洗后的字符串:", cleanStr) # 判断是否为回文字符串, 正向和反向读取内容相同,即回文. print(cleanStr == cleanStr[::-1])

    结果示例1:

    结果示例2:


    3.字符串内建函数

    1)字符串的判断与转换

    示例:

    >>> s='hello' >>> s.lower() 'hello' >>> s.upper() 'HELLO' >>> s.title() 'Hello' >>> s = 'Hello WoRld' >>> s.swapcase() 'hELLO wOrLD' >>> s.capitalize() 'Hello world' >>> s.title() 'Hello World' >>> s 'Hello WoRld' >>> s.isalnum() False >>> s = 'hello' >>> s.isalnum() True >>> s.istitle() False >>> s = 'Hello' >>> s.istitle() True >>> s = 'Hello world' >>> s.istitle() False >>> s = '' >>> s.isspace() False >>> s = ' ' >>> s.isspace() True >>> s = '\t' >>> s.isspace() True

    注意:

    .title: 标题需要每一个首字母大写,e.g. Hello Python

    .space: 这里的空格指的是广义的空格, e.g: \n, \t

     

    2)字符串的开头和结尾匹配

    示例:

    >>> filename = 'hello.py' >>> filename.endswith('.py') True >>> url = 'http://www.westos.org' >>> url.startswith('http') True

    3)字符串的数据清洗

    示例:

    >>> username = input('Username:') Username:root >>> username == 'root' False >>> 'root '.rstrip() 'root' >>> username = input('Username:').rstrip() Username:root >>> username == 'root' True >>> '\n\thello\n\t'.strip() 'hello' >>> s = 'hello world jdjdfjsf jfjf' >>> s.replace(' ', '') 'helloworldjdjdfjsfjfjf' >>> s.replace('he', 'westos') 'westosllo world jdjdfjsf jfjf'

    4)字符串的位置调整

    示例:

    >>> s = "学生管理系统" >>> s.center(50) ' 学生管理系统 ' >>> s.center(50, '*') '**********************学生管理系统**********************' >>> s.center(50, '-') '----------------------学生管理系统----------------------' >>> s.ljust(50, '-') '学生管理系统--------------------------------------------' >>> s.rjust(50, '-') '--------------------------------------------学生管理系统'

    5)字符串的搜索,统计

    示例:

    >>> s = 'hello python hello java' >>> s.find('hello') 0 >>> s.find('llo') 2 >>> s.find('llo', 6) 15 >>> s.find('llokk') -1 >>> s.index('hello') 0 >>> s.count('hello') 2

    6)字符串的分离与拼接

    # 分割 ip = '172.25.254.250' # 以.为分隔符进行分割; print(ip.split('.')) # 打印结果为['172', '25', '254', '250'] # 以.为分隔符进行分割;最多切割1次; print(ip.split('.', maxsplit=1)) #打印结果为 ['172', '25.254.250'] filename = 'hello.py' print(filename.split('.')) # 按行进行分割 info = """ user1: user1 user2: user2 user3: user3 user4: user4 """ # 以空格(\t, \n, \ )进行分割 print(info.split()) # 以\n进行分割; print(info.splitlines()) # 组合 ips = ['172', '25', '254', '250'] # 将ips里面的每个元素拼接在一起, 拼接符为.; print(".".join(ips)) print("-".join(ips))

    结果截图:

    7)其他的内置方法

    cmp()          根据字符串的 ASCII 码值进行比较(py3取消)

    len()        返回字符串的字符数

    max() and min()    返回最大或者最小的字符,(按照 ASCII 码值排列)

    enumerate()    枚举对象同时列出数据和数据下标

    zip()        将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

    最新回复(0)