str 常用操作

字符串切片
# 字符串切片  (字符串不可更改)
s = '123456789'
s1 = s[0:3]  # 顾头不顾尾
print(s1, type(s1))  # 123 <class 'str'> str 切换之后还是切片
s2 = s[-1]
print(s2)  # 9 取得最后一个数值
print(s[1:])  # 23456789 从索引1到末尾
print(s[0:-1])  # 12345678 获得从第1个元素到倒数第2个元素(顾头不顾尾)
print(s[-1:1:-2]) # 注意:从右往左,步长是-2(反方向步长)
# print(s[-1:1]) # 注意没有反向步长, 是空字符串
print(s[:5:2])  # 正方向步长
print(s[::])  # 全部取出来

字符串常用的操作方法

# replace 对字符串的任何修改都不会影响原字符串
t = '张三很高,张三很牛逼,张三很优秀'
t1 = t.replace('张三', '李四')  # 默认全部替换
print(t1)  # 李四很高,李四很牛逼,李四很优秀
print(t)  # 张三很高,张三很牛逼,张三很优秀
# 从左到右一次替换两个,此方法无法从中间开始替换
print(t.replace('张三', '李四', 2)) # 李四很高,李四很牛逼,张三很优秀


#  strip() 方法删除任何前导(开头的空格)和尾随(结尾的空格)字符  空格/tab/换行符都能去掉,中间的不能去掉
s = '  hello hello\t'
# print(s)
print(s.strip())  # hello hello
# 去掉指定字符 从左到右 从右到左,删除指定的字符,如果剩余的字符不再指定的删除范围内则不再继续删除,不会再删除中间的
s = 'HIH你H好HHK'
print(s.strip('KHI'))  # 你H好
print(s.strip('KI'))  # HIH你H好HH

# 重点:split 默认按照空格分割,注意:返回的是一个列表 str----->list
s = '路飞 索隆 乌索普'
l = s.split()
print(l)   # ['路飞', '索隆', '乌索普']

s = '路飞:索隆:乌索普'
print(s.split(':'))  # ['路飞', '索隆', '乌索普'] 指定字符分割

s = ':路飞:索隆:乌索普:'  # 有n个分割符,生成n+1个元素,注意首尾分割符是空字符串
print(s.split(":"))  # ['', '路飞', '索隆', '乌索普', '']

# 指定分割个数,剩余的不再分割
s = '路飞:索隆:乌索普:娜美'
print(s.split(":", 2))  # ['路飞', '索隆', '乌索普:娜美']


# 重点:join 可迭代对象都可用join(列表、字符串等)
s = '香克斯'
s = '+'.join(s)
print(s)  # 香+克+斯

# 列表转化为字符串的方式可用join(列表中的元素必须是字符串类型,否则会报错)
l = ["路飞", "索隆", "乌索普", "娜美"]
s = ':'.join(l)
print(s, type(s))  # 路飞:索隆:乌索普:娜美 <class 'str'>
print(l)  # ['路飞', '索隆', '乌索普', '娜美']




str1 = 'taiBai救急'
str2 = str1.upper()  # 不会对原来的字符串产生任何影响,都是产生一个新的字符串
print(str2)  # TAIBAI救急 全部转为大写,中文忽略
print(str1.lower()) # taibai救急

# 大小写举例应用,验证码忽略大小写
count = 0
code = "qwER"
while count < 3:
    username = input('输入用户名:')
    password = input('输入密码:')
    your_code = input('输入验证码')
    if your_code.upper() == code.upper():
        if username =='zhangsan' and password =='1234':
            print('登录成功')
            break
        else:
            print('用户名或者密码错误')
    else:
        print('验证码错误')
    count += 1

else:
    print('已经输入三次失败了')

# startwitch
t = 'hello'
print(t.startswith('he'))   # True
print(t.startswith('h', 0, 2))  # True
print(t.endswith('lo'))  # True

# format
s = '我是{}, 性别{},梦想{}'.format('路飞','男', '海贼王')
print(s)
# {}中的数字是索引,索引从0开始,可以重复利用
s = '我是{0}, 性别{1},成为{2},我依然是{0}'.format('路飞', '男', '海贼王')
print(s)  # 我是路飞, 性别男,成为海贼王,我依然是路飞

# 关键字
s = '我是{name}, 性别{sex},梦想{dream}'.format(name='路飞', sex='男', dream='海贼王')
print(s)  # 我是路飞, 性别男,梦想海贼王

s = 'qwe1234'
print(s.isdecimal())  # false 判断是否是十进制组成
print(s.isalpha())   # 判断是否都是字母(常用来判断用户输入的内容是否都是十进制数字)
print(s.isalnum())  # 判断是否是字母和数字
 #isdigit()
#True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
#False: 汉字数字
#Error: 无

#isdecimal()
#True: Unicode数字,,全角数字(双字节)
#False: 罗马数字,汉字数字
#Error: byte数字(单字节)

#isnumeric()
#True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
#False: 无
#Error: byte数字(单字节)
#s.isalnum() 所有字符都是数字或者字母
#s.isalpha() 所有字符都是字母


s = 'ABCADAE'
print(s.count('A'))  # 3 默认全部
print(s.count('A', 0, 5))  # 指定位置的个数 顾头不顾尾
小练习
# 判断是否是回文 上海自来水来自海上
# 方法1
content = input('请输入字符串')
if content == content[::-1]:  # 切片反向
    print('是回文')
else:
    print('不是回文')

# 方法2
s = input('请输入文字')
i = 0
flag = False
while i < len(s)//2:
    if s[i] == s[-i-1]:
        i += 1
        flag = True
        continue
    else:
        break

if flag:
    print('是回文')
else:
    print('不是回文')
# 用户输入类似 1+ 2 +3+4 中间有空格,求和
s = input('输入内容')
l1 = s.split('+')  # 先转化为列表 ['1', '2 ', '3   ', '6']
result = 0
for i in l1:
    result += int(i)  # int 会自动去除空格
print(result)
s = '123EFDFFD255' # 有多少个数字(0--9)
count = 0
for i in s:
    if i.isdecimal():
        count += 1
print(count)
#1-2+3-4---+99 (排除88 ,使用了continue ,不会继续下一步,n +=1 放在代码的上边. 同时最后一个循环n=98<99, n+1 为99,刚好满足 +99条件)
s = 0
n = 0
while n < 99:
    n += 1
    if n == 88:
        continue
    elif n % 2 == 1:
        s += n
    else:
        s -= n
print(s)

posted on 2020-04-18 11:04  黑桃Q  阅读(197)  评论(0编辑  收藏  举报

导航