字符串常见操作

索引

s = "abcdefg"
# 字符串数据,切片后取出的数据都是字符串类型
# 从左至右取值:从0开始
# 从右向左取值:从-1开始
print("s[0]:%s" % s[0])    # a
print("s[-1]:%s" % s[-1])   # g

切片

s = "abcdefg"
s1 = s[:]    # 取全部
s2 = s[::2]   # 从左至右取值,步长为2  aceg
s3 = s[2::-1]  # 从2下标开始向左取值,步长为1     cba
s4 = s[-1::-2]    # 从-1下标开始向左取值,步长为2  geca
s5 = s[2:5]   # 从2下表开始取值,到5下表截至,不包含5  cde

字符串的常见操作

# 字符串的常用操作方法    字符串操作不会对原有字符串进行改变
s = "taibai"
word = "hello world"
print(s.count("i"))   # 统计字符串中xx出现次数   返回数据int  2
print(s.upper())    # 字符串整个转换为大写    TAIBAI
print(s.lower())    # 字符串整个转换为小写    taibai
print(s.capitalize())   # 字符串首字母转换为大写    Taibai
print(word.capitalize())  # 整个字符串首字母转换为大写(整个字符串看为一个整体)Hello world
print(s)            # 字符串操作不会对原有字符串进行改变   taibai

# 应用   验证码不区分大小写(统一转换为大写或小写)
user_name = input("请输入用户名:")
password = input("请输入密码:")
code = "QwEr"
your_code = input("请输入验证码(不区分大小写):")
if your_code.lower() == code.lower():
    if user_name == "zhangsan" and password == "1234":
        print("登录成功")
    else:
        print("验证码或密码错误")
else:
    print("验证码错误")

# strip     去空(去除左右空格)    包含:\n、\t
str1 = "      \nabcd31      12     \t"
print(str1.strip())
print(len(str1))    # 27   去空后,不影响原有字符串

# lstrip    去除左边空格
print(str1.lstrip())

# rlstrip   去除右边空格
print(len(str1.rstrip()))    # 去除右边空格

# join 字符串拼接(用什么把字符串拼接起来)
str1 = "abcd"     # 如果被拼接元素是字符串,则把字符串拆分成单独元素,再进行拼接
print("+".join(str1))    # a+b+c+d

str2 = ["a1", "a2" ,"a3"]     # 被拼接元素如果是列表,则列表中元素必须是字符串,如果是数字,则会报错
print(":".join(str2))       # 拼接后:a1:a2:a3

# split 把字符串以某元素分割    分割成多个字符串,放在列表中,不包含分割元素
str1 = "abcdefg"
print(str1.split("b"))     # 分割后:['a', 'cdefg']

str2 = ":abd:def:efg:fgh"
print(str2.split(":", 2))    # 2为分割次数,表示分割两次    分割后:['', 'abd', 'def:efg:fgh']

# count   统计字符串出现次数
str1 = "abcdabcdefabceasd"
print(str1.count("abc"))    # 3

# format
msg = "我叫{},今年{},就读于{}"
msg1 = msg.format("张三", 18, "墨尔本大学")
print(msg1)    # 我叫张三,今年18,就读于墨尔本大学

# 可以直接再字符串后拼接
msg3 = "我叫{},今年{},就读于{}".format("李四", 25, "北京大学")
print(msg3)    # 我叫李四,今年25,就读于北京大学

# 使用索引的方法,可以减少format后参数的个数,重复参数不用写多次
msg3 = "我叫{0},今年{1},就读于{2},不管我去到哪,我都叫{0}".format("李四", 25, "北京大学")
print(msg3)    # 我叫李四,今年25,就读于北京大学,不管我去到哪,我都叫李四

# 使用参数名的方法传递,format后参数指定参数值
msg4 = "我叫{name},今年{age},就读于{adu},不管我去到哪,我都叫{name}".format(age=25, adu="北京大学", name="李四")
print(msg4)

# is系列   判断是否是什么类型
a = "abc"
b = "abc123"

# isalnum   字符串由字母或数字组成
print(a.isalnum())  # True
print(b.isalnum())  # True

# isdecimal   字符串只由十进制组成  不包含罗马数字,中文数字,小数
print(a.isdecimal())   # False
print(b.isdecimal())   # False

# isalpha   字符串只由字母组成
print(a.isalpha())    # True
print(b.isalpha())    # False

# isdigit   判断是否是整数    不包含罗马数字,中文数字,小数
num1 = "1234"
num2 = "1234abc"
print(num1.isdigit())    # True
print(num2.isdigit())    # False

应用 判断是否是小数

# 应用   判断是否是小数
"""
1、判断小数点个数是否是1   count
2、以小数点分割   判断小数点右边是否是整数
3、判断小数点左边
    是整数isdigit
    如果是负整数
"""
def is_float(s):
    str1 = str(s)
    if str1.count(".") == 1:
        left = str1.split(".")[0]
        right = str1.split(".")[1]
        if right.isdigit():
            if left.count("-") == 1 and left.startswith("-"):
                num3 = left.split("-")[-1]
                if num3.isdigit():
                    return True
            elif right.isdigit():
                return True
    else:
        return False

# 调用is_float函数执行
price = input("请输入商品价格:")
if is_float(price):
    print("输入正确:%s" % price)
else:
    print("输入有误:%s" % price)