python 4_内置数据结构字符串

1. 字符串的创建和赋值

1.1 创建

在这里插入图片描述

str1 = 'westos'

str2 = "westos"

str3 = """      westos      """

1.2 转义字符

  • 转义字符:一个反斜线加一个单一字符,可以表示一个特殊字符,通常是不可打印的字符
  • 特殊记忆:换行符\n、制表符\t、斜线\\
>>> s = "hello westos"
>>> s
'hello westos'
>>> 
>>> s = "hello\nwestos"
>>> print(s)
hello
westos
>>> 
>>> s = "hello\twestos"
>>> print(s)
hello   westos

在这里插入图片描述

1.3 三重引号详解

  • 作用一:进行多行注释
    在这里插入图片描述

  • 作用二:定义多行字符串
    为避免使用转义字符 \n,通常会用在定义SQL语句的表达式中没有变量的时候使用。
    在这里插入图片描述

1.4 字符串的删除

在这里插入图片描述

2. 字符串的基本特性

2.1 连接操作符和重复操作符

  • 连接操作符:从原有字符串获得一个新的字符串
# 1. 连接操作符和重复操作符
name = 'westos'
print( 'hello' + ' ' + name )        #连接操作符
print( name + str(1) )

注意点:当字符串连接别的数据时,一定要注意数据类型的转换
在这里插入图片描述

  • 重复操作符:创建一个包含了原有字符串的多个拷贝的新串
print( '*' * 20 + '学生管理系统' + '*' * 20 )   # 重复操作符

补充知识:格式化代码符合PEP8编码风格,Ctrl + Alt + L

2.2 成员操作符

# 2. 成员操作符
s = 'hello westos'
print( "o" in s )        #True
print( "o" not in s )    #False

2.3 正向索引和反向索引

  • 索引:获取特定偏移的元素
  • 索引的分类:正向索引,反向索引
  • 字符串、列表和元组的共同特性
    在这里插入图片描述
# 3. 正向索引和反向索引
s = 'westos'
print(s[0])     # w
print(s[3])     # t
print(s[-1])    # s
print(s[-3])    # t

2.4 切片

在这里插入图片描述

# 4. 切片
"""
回顾:
    range(3): [0, 1, 2]
    range(1, 4): [1, 2, 3]
    range(1, 6, 2): [1, 3, 5]
切片:切除一部分的内容
    s[ start : end : step ]
    s[ : end : ]
    s[ start : : ]
总结:
    s[ :n ] : 拿出前n个元素
    s[ n: ] : 除了前n个元素,其他元素保留
    s[ : ]  : 从头开始访问,一直到字符串结束的位置
    s[ ::-1]: 倒序输出
"""
s = 'hello westos'
print(s[1:3])   # el
print(s[:3])    # hel
print(s[:5])    # hello 拿出字符串的前5个字符
print(s[1:])    # ello westos 除了第1个元素,其余元素保留
print(s[2:])    # llo westos
print(s[:])     # hello westos
print(s[::-1])  # sotsew olleh

2.5 可迭代for循环访问

# 5. for循环访问
s = "westos"
count = 0
for item in s:
    count += 1
    print(f"第{count}个字符串是{item}")
"""
第1个字符串是w
第2个字符串是e
第3个字符串是s
第4个字符串是t
第5个字符串是o
第6个字符串是s
"""

练习:用户输入一个字符串,判断该字符串是否为回文字符串

eg:" aba" 是回文字符串,"abba"也是回文字符串,"abc"不是回文字符串。

  • 方法一:
# 需求:用户输入一个字符串,判断该字符串是否为回文字符串
# eg:" aba" 是回文字符串,"abba"也是回文字符串,"abc"不是回文字符串。

str = input("输入字符串:")
if str == str[::-1]:
    print(f"{str}是回文字符串")
else:
    print(f"{str}不是回文字符串")

"""
输入字符串:abc
abc不是回文字符串
"""
  • 方法二:
# 需求:用户输入一个字符串,判断该字符串是否为回文字符串
# eg:" aba" 是回文字符串,"abba"也是回文字符串,"abc"不是回文字符串。
# 三元运算符解决
str = input("输入字符串:")
result = "是回文字符串" if str == str[::-1] else "不是回文字符串"
print(f"{str}{result}")

"""
输入字符串:abc
abc不是回文字符串
"""

3. 字符串的内建方法

3.1 字符串的判断与转换

在这里插入图片描述

  • 字符串的判断
# 1. 字符串的判断
s = 'hello WESTOS'
print(s.isalnum())  # False,因为里面有空格
print(s.isalpha())  # False
print(s.isascii())  # True
print(s.isdigit())  # False
print(s.islower())  # False
print(s.isspace())  # False,并不全是空格
print(s.istitle())  # False,Hello Westos
print(s.isupper())  # False
  • 字符串的类型转换
# 2. 字符串的类型转换
print('hello'.upper())  # HELLO
print('heLLO'.lower())  # hello
print('hello'.title())  # Hello
print('hello world'.capitalize())   # Hello world
print('hello world'.swapcase())     # HELLO WORLD

练习:用户输入Y或者 y,都继续执行程序

# 需求: 用户输入Y或者y,都继续执行程序
# yum install httpd
choice = input("是否继续安装程序:")
if choice.lower() == 'y' or choice.upper() == 'Y' :
    print("正在安装程序......")

3.2 字符串的开头和结尾匹配

在这里插入图片描述

  • 字符串的开头匹配
# 1. 字符串的开头匹配
# startswith
url = 'http://www.baidu.com'
if url.startswith('http'):
    # 具体实现爬虫,感兴趣的话可以查看request模块。
    print(f"{url}是一个正确的网站,可以爬取网站的代码。")
  • 字符串的末尾匹配
# 2. 字符串的末尾匹配
# endswith
# 需求:判断文件的类型
filename = 'hello.png'
if filename.endswith('.png'):
    print(f"{filename}是图片文件")
elif filename.endswith('.txt'):
    print(f"{filename}是文本文件")
elif filename.endswith('.mp3'):
    print(f"{filename}是音乐文件")
else:
    print(f"{filename}是未知文件")

注意点:
在这里插入图片描述

3.3 字符串的数据清洗

在这里插入图片描述

>>> " hello ".strip
<built-in method strip of str object at 0x0000021F03216630>
>>> " hello ".strip()
'hello'
>>> " hello ".lstrip()
'hello '
>>> " hello ".rstrip()
' hello'
>>> " hel               lo ".replace(" ", "")
'hel\t\tlo'

3.4 字符串的位置调整

在这里插入图片描述

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

3.5 字符串的搜索和统计

在这里插入图片描述

  • find 如果找到子串,则返回子串开始的索引位置。否则,返回 -1。
    index 如果找到子串,则返回子串开始的索引位置。否则,抛出异常。
# 字符串的搜索和统计
s = 'hello westos'
print(s.find("llo"))       # 2
print(s.index("llo"))      # 2
print(s.find("xxx"))       # -1
#print(s.index("xxx"))     # 抛出异常
                           # ValueError: substring not found
"""
find 如果找到子串,则返回子串开始的索引位置。否则,返回 -1。
index 如果找到子串,则返回子串开始的索引位置。否则,抛出异常。
"""

print(s.count("xxx"))      # 0
print(s.count("l"))        # 2
print(s.count("o"))        # 2

3.6 查看字符串的所有方法

在这里插入图片描述

3.7 字符串的分离和拼接

在这里插入图片描述

  • 分离
# 1. 字符串的分离

item = IP.split('.')
print(item)             # [ '172', '25', '254', '100' ]
  • 拼接
# 2. 字符串的拼接

print("-".join(item))   # 172-25-254-100

练习:判断IP的合法性,将IP的每一位数字拿出,判断每位数字是否在 0~255 之间

# 需求:判断IP的合法性,
#       将IP的每一位数字拿出,判断每位数字是否在 0~255 之间

IP = input("输入IP地址:")
item = IP.split('.')
print(item)             # [ '172', '25', '254', '100' ]
for num in item:
    num_int = int(num)
    if 0 <= num_int <= 255:
        print(f"{num}是合法的。")
    else:
        print(f"{num}不是合法的。")
        print(f"{IP}不是合法的IPv4地址。")
        exit()
print(f"{IP}是合法的IPv4地址。")

在这里插入图片描述在这里插入图片描述

3.8 其他内置方法

在这里插入图片描述

4. 扩展:string模块

在这里插入图片描述

4.1 string模块的应用

# 回顾:
#       random模块

import random
print( random.choice("0123456789") )

print( random.choice("0123456789") + random.choice("abcdefghijklmnopqrstuvwxyz") )

# string模块

import string

print(string.digits)        # 0123456789
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

print( random.sample(string.digits, 4) )        # 随机产生4个数字
print( random.sample(string.ascii_letters, 4))  # 随机产生4个字符

print( "".join(random.sample( string.ascii_letters, 4 )) )  # 设定字符之间的联系

# 需求: 生成由2个数字和2个字符组成的验证码

print( "".join( random.sample( string.digits, 2 ) ) + "".join( random.sample( string.ascii_letters, 4 ) ) )

4.2 练习:生成100个验证码,每个验证码由2个数字和4个字母组成

# 需求:生成100个验证码,每个验证码由2个数字和4个字母组成

import random
import string

for i in range(1, 101):
    print( "".join( random.sample( string.digits, 2 ) ) + "".join( random.sample( string.ascii_letters, 4 ) ) )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值