字符串
切记,字符串是不可变对象,所以任何操作对原字符串不会有任何影响。
一,字符串的大小写
1 s="jikn" 2 s.capitalize() 3 print(s) # 输出发现并没有任何的变化. 因为这⾥的字符串本身是不会发⽣改变的. 需要我们重新获取 4 5 s1=s.capitalize() #将首字母大写,感觉有点鸡肋 6 print(s1) 7 8 s2=s.lower() 9 print(s2) #全部转化为小写 10 11 s3= s.swapcase() # ⼤⼩写互相转换 12 print(s3) 13 # 不常⽤ 14 s4= s.casefold() # 转换成⼩写, 和lower的区别: lower()对某些字符⽀持不够好.casefold()对所有字⺟都有效. ⽐如东欧的⼀些字⺟ 15 print(s4) 16 s5="БBß" # 俄美德三种语言的B 17 print(s5) 18 print(s5.lower()) 19 print(s5.casefold()) 20 # 每个被特殊字符隔开的字⺟⾸字⺟⼤写 21 s6= "alex eggon,taibai*yinwang_麻花藤" 22 23 s7=s6.title() #将句子中单词首字母都大写。 24 print(s7) 25 # 中⽂也算是特殊字符 26 s4 = "alex⽼男孩wusir" # Alex⽼男孩Wusir 27 print(s4.title())
二,字符串的切来切去
1 # 居中 2 s1 = "周杰伦" 3 ret = s1.center(10, "*") # 拉⻓成10, 把原字符串放中间.其余位置补*,*号也可以用空格 4 print(ret) 5 6 # 去空格 7 s2 = " alex wusir haha " 8 ret = s2.strip() # 去掉左右两端的空格 9 print(ret) 10 ret = s2.lstrip() # 去掉左边空格 11 print(ret) 12 ret = s2.rstrip() # 去掉右边空格 13 print(ret) 14 15 # 应⽤, 模拟⽤户登录. 忽略⽤户输⼊的空格 16 username = input("请输⼊⽤户名:").strip() 17 password = input("请输⼊密码: ").strip() 18 if username == 'alex' and password == '123': 19 print("登录成功") 20 else: 21 print("登录失败") 22 23 s3= "abcdefgabc" 24 print(s3.strip("abc")) # defg 也可以指定去掉的元素,可以用空的字符串替代,达到删除的效果
三,字符串替换与切割
1 # 字符串替换 2 s1= "sylar_alex_taibai_wusir_eggon" 3 ret = s1.replace('alex', '⾦⻆⼤王') # 把alex替换成⾦⻆⼤王 4 print(s1) # sylar_alex_taibai_wusir_eggon 切记, 字符串是不可变对象. 所有操作都是产⽣新字符串返回 5 print(ret) # sylar_⾦⻆⼤王_taibai_wusir_eggon 6 ret = s1.replace('i', 'SB', 2) # 把i替换成SB, 替换2个 7 print(ret) # sylar_alex_taSBbaSB_wusir_eggon 8 9 # 字符串切割 10 s2= "alex,wusir,sylar,taibai,eggon" 11 lst =s2.split(",") # 字符串切割, 根据,进⾏切割 12 print(lst) 13 14 s="今天天气真好" 15 s2=s.split("今天天气真好呀呀呀呀") #因为找不到这个字符串,而不进行任何切割
四,格式化输出
1 # 格式化输出 2 s12 = "我叫%s, 今年%d岁了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法
格式为%[(name)][flags][width].[precision]typecode
[(name)]可选,用于选择指定的key
[flag]可选,可供选择的值为:
+,右对齐,正数前加正号,负数前加负号
-,左对齐,正数前无符号,负数前加负号
空格,右对齐,正数前加空格,负数前加负号
0,右对齐,正数前无符号,负数前加负号,用0填充空白
[width]可选,占有宽度
.[precision]可选,小数点后保留两位
typecode,必选,有以下三种:
- s,将对象变为字符串类型
- d,将对象转化为整数
- f,将对象变为浮数,默认保留六位小数点后面
3 print(s12) 4 s12 = "我叫{}, 今年{}岁了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化 5 print(s12) 6 s12 = "我叫{0}, 今年{2}岁了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置 7 print(s12) 8 s12 = "我叫{name}, 今年{age}岁了, 我喜欢{singer}".format(name="周杰伦", singer="周润发", age=28) # 指定关键字 9 print(s12)
五,查找
1 2 s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔." 3 ret1 = s13.startswith("sylar") # 判断是否以sylar开头 4 print(ret1) 5 ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开头 6 print(ret2) 7 ret3 = s13.endswith("语⾔") # 是否以'语⾔'结尾 8 print(ret3) 9 ret4 = s13.endswith("语⾔.") # 是否以'语⾔.'结尾 10 print(ret4) 11 ret7 = s13.count("a") # 查找"a"出现的次数 12 print(ret7) 13 ret5 = s13.find("sylar") # 查找'sylar'出现的位置 14 print(ret5) 15 ret6 = s13.find("tory") # 查找'tory'的位置, 如果没有返回-1 16 print(ret6) 17 ret7 = s13.find("a", 8, 22) # 切⽚找 18 print(ret7) 19 ret8 = s13.index("sylar") # 求索引位置. 注意. 如果找不到索引. 程序会报错 20 print(ret8)
六,条件判断
1 # 条件判断 2 s14 = "123.16" 3 4 # 是否由字⺟和数字组成 5 print(s14.isalnum()) 6 7 # 是否由字⺟组成 8 print(s14.isalpha()) 9 10 # 是否由数字组成, 不包括⼩数点 11 print(s14.isdigit()) 12 print(s14.isdecimal()) 13 print(s14.isnumeric()) # 这个⽐较⽜B. 中⽂都识别.
七,迭代(就是遍历)
for 变量 in 可迭代对象: in有两种⽤法: 1. 在for中. 是把每⼀个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中.(不可以在数字中迭代) 标签:alex,s13,print,ret,sylar,相关,字符串,操作 From: https://www.cnblogs.com/zuishaui/p/17829983.html