字符串
字符串就是一串字符, 是编程语言中表示文本的数据类型
1. 字符串表示
单引号 双引号 多引号 多行字符串, 有空格默认一个空格, 占一个位置
str1 = "hello world"
str3 = '666你好'
str2 = """ what where who """
2. 获取字符串中的元素
和列表一样, 通常使用下标获取
str = "hello world"
str[0] # 第一个元素
str[1] # 第二个元素
3. 遍历字符串
str1 = "hello word"
for s in str1:
print(s)
4. 字符串常用方法
4.1 判断
isalpha( ) : 在至少有一个字符的前提下, 所有字符都是字母组成, 返回True
isdecimal( ) : 在至少有一个字符的前提下,所有字符都是数字组成, 返回True
startwith(str) : 判断是否以 str 开头, 返回True
endwith(str) : 判断是否以 str 结尾, 返回True
str1 = "hello world"
# for s in str1:
# print(s)
# print(str1)
str2 = "helloworld"
str3 = ""
str4 = "123abc"
str5 = "123"
str6 = "1 2456"
"""
isalpha() : 至少有一个字符,并且所有字符都是字母则返回True
"""
print(str1.isalpha()) # False(空格不是字母)
print(str2.isalpha()) # True
print(str3.isalpha()) # False(不满足至少有一个字符)
print("*" * 20)
"""
isdecimal() : 只包含数字则返回
"""
print(str3.isdecimal()) # False
print(str4.isdecimal()) # False
print(str5.isdecimal()) # True
print(str6.isdecimal()) # False
print("*" * 20)
"""
startwith(str) : 检查是否以str开头,是则返回True
"""
print(str1.startswith("h")) # True
print(str1.startswith("1")) # False
print(str1.startswith("")) # True
print("*" * 20)
"""
endwith(str) : 检查是否以str结尾, 是则返回True
"""
print(str1.endswith("d")) # True
print(str1.endswith("")) # True
print(str1.endswith("0")) # False
4.2 查找,替换
查找:
find (str, start = 0, end = len(string)) 从左往右找
str : 要查找的字符, start , end 指定范围, 如果找到则返回True
rfind (str, start = 0, end = len(string)) 从右往左找
str : 要查找的字符, start , end 指定范围, 如果找到则返回True
替换:
replace(old_str, new _str, num = string, count(old))
返回一个新字符串, 把stirng中的old_str替换成new_str,
如果num指定, 则替换不超过num次
str1 = "hello world"
"""
find(str, start = 0, end = len(string))
检查str 是否包含在string中, 如果start和end指定范围
则检查是否包含在指定范围内, 如果是返回开始的索引值, 否则返回 -1
"""
print(str1.find("hello")) # 0
print(str1.find("world")) # 6
print("*" * 10)
"""
rfind(str, start = 0, end = len(string))
从右边开始找
"""
print(str1.rfind("hello")) # 0
print(str1.rfind("world")) # 6
print("*" * 10)
"""
replace(old_str, new _str, num = string, count(old))
返回一个新字符串, 把stirng中的old_str替换成new_str,
如果num指定, 则替换不超过num次
"""
print(str1.replace("hello", "666"))
# 666 world
4.3 切割, 去空白
切割:
split (str="", maxsplit)
返回列表,以 str 为分隔符拆分 string,
如果 maxsplit 有指定值,则仅分隔 maxsplit + 1 个子字符串,
str 默认包含\r, \t, \n 和空格去空白:
strip()
返回新字符串,截掉 string 左右两边的空白字符(可以指定截掉的字符)
str1 = "hello world"
"""
split(str="", maxsplit)
返回列表,以 str 为分隔符拆分 string,
如果 maxsplit 有指定值,则仅分隔 maxsplit + 1 个子字符串,
str 默认包含\r, \t, \n 和空格
"""
print(str1.split(" "))
# ['hello', 'world']
print(str1.split("o"))
# ['hell', ' w', 'rld']
"""
strip()
返回新字符串,截掉 string 左右两边的空白字符(可以指定截掉的字符)
"""
str2 = " a b c "
print(str2)
print(str2.strip())
5. 字符串案例之用户名密码校验
● 用户名和密码格式校验程序 ● 要求从键盘输入用户名和密码,分别校验格式是否符合规则 ○ 如果符合,打印用户名合法,密码合法 ○ 如果不符合,打印出不符合的原因,并提示重新输入 ● 用户名长度6-20,用户名必须以字母开头 ● 密码长度至少6位,不能为纯数字,不能有空格 """ """ 1.从键盘输入用户名(需要while循环) 2.长度6-20 3.必须字母开头 4.输入密码(while循环) 5.密码长度至少6位 6.不能为纯数字 7.不能有空格
while True:
username = input("请输入用户名: ")
# 用户名
if 6 <= len(username) <= 20:
if username[0].isalpha():
print("合法用户名")
break
else:
print("用户名首字符必须是字母")
continue
else:
print("用户名长度不正确")
continue
while True:
password = input("请输入密码: ")
# 密码
if len(password) >= 6:
if not password.isdecimal():
# " " in password
if password.find(" "):
print("合法密码")
break
else:
print("密码不能有空格")
continue
else:
print("密码不能为纯数字")
continue
else:
print("长度不正确")
continue