字符串的相关操作

发布时间 2023-11-13 19:46:49作者: 我才是最帅的那个男人

字符串

  切记,字符串是不可变对象,所以任何操作对原字符串不会有任何影响。

一,字符串的大小写

 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中.(不可以在数字中迭代)