字符串的知识点:

s1 = 'aa'
s2 = "aa"
s3 = '''aa'''

s1,s2,s3的id是相同的,内容相同,id就一样。
s1 == s2 为true
s1 is s2 为true

s1 = input()
s2 = input()

即使输入的内容一样,id也不一样,这是由于 input 函数执行时和用常量赋值时的过程不同, input 在输入时开辟一个新的空间。所以:
s1 == s2 为true
s1 is s2 为false
字符串运算符:
+:把字符串拼接起来。
*:重复多次。
in/not in:判断一个字符串在不在一个字符串中,返回值为bool类型。
r:保留原格式。

print(r"\n")
#打印出\n

[]:切片使用或单个字符,与c中字符串中下标一样。
[0:7] 表示[0,7),包前不包后。
[3:] 在3取到字符串末尾,包括末尾。
[ :-1]:表示从第一个到最后一个(不包含最后一个)
[-1:]:最后一个字符。
[::-1]:负数表示逆序,不加或者整数为正序,数的大小为间隔几个位置打印一个字符。

s = "abcdefg"
print(s[::1])
# abcdefg
print(s[::-1])
# gfedcba
print(s[6:1:-1])
# gfedc,也是没有打印下标为1的字符。
print(s[6:1:-2])
# gec,间隔为2.如果剩余的不够间隔则不打印。

内建函数:

替换相关:
capitalize():将字符串的第一个字符转换为大写。
title():所有单词都是大写开头,其他都是小写。
upper():将字符串转换成全大写形式。
lower():将字符串转换成全小写形式。
istitle()是判断是否为标题,返回值是一个bool类型,同理也有其他的isXXX()。

msg = "ptg is a pig"
print(msg.capitalize())
print(msg.title())
print(msg.istitle())
print(msg.upper())
msg = msg.upper()
print(msg.lower())
# Ptg is a pig
# Ptg Is A Pig
# False
# PTG IS A PIG
# ptg is a pig

查找相关:
find(str_f , beg = 0,end = len(str)):如果可以找到返回值是字母第一次出现的位置,未找到返回-1。
rfind(str_f , beg = 0,end = len(str)):从右侧找,返回值是一个位置。
lfind():同rfind。
index():找得到的话返回下标,找不到就会报异常ValueError。
rindex():
lindex():
replace(old,new[,max]):old替换new,最多替换max次。

msg = "ptg is a pig"
print(msg.capitalize())
print(msg.title())
print(msg.istitle())
print(msg.upper())
msg = msg.upper()
print(msg.lower())

编码与解码

当汉字在网上传播的时候要转成编码的形式,接收后要解码,编码和解码的方式一定要相同,不然就会出现错误。

encode(encoding = ‘UTF-8’,errors = ‘strict’):编码encoding字符串,如果出错,报异常ValueError,除非errors指定的是‘ignore’或是replace。
decode:解码

msg = "有内鬼,终止交易!"
res = msg.encode("utf-8")
print(res)
res = res.decode("utf-8")
print(res)
# b'\xe6\x9c\x89\xe5\x86\x85\xe9\xac\xbc\xef\xbc\x8c\xe7\xbb\x88\xe6\xad\xa2\xe4\xba\xa4\xe6\x98\x93\xef\xbc\x81'
# 有内鬼,终止交易!

判断

startswith(str):判断是否以…开头的。
endswith(str):判断是否以…结尾的。
例如:应用于文件上传,判断拓展名。

filename = "笔记.txt"
filename_1 = "笔记.doc"
res = filename.endswith("txt")
print(res)
res = filename_1.endswith("txt")
print(res)
# True
# False
path = input("请选择文件:")
p = path.rfind("\\") # 转义,不能用r,会报错。
filename = path[p+1:]
if filename.endswith("pgn"):
    print("上传成功!")
else:
    print("上传失败!")
# 请选择文件:C:\FileRecv\选课通知pgn
# 上传成功!

isdigit(str):判断是否为数字。
isalpha(str):是否为字母。

join():形参可以是列表,字符串。

new_str = "---".join("abcadsdad")
print(new_str)
# a---b---c---a---d---s---d---a---d

strip():去除字符串空格,前面加l是左侧,r是右侧。

split(str):分割字符串。将分割后的字符串保存到列表中。以str为分割的标志,str不能为空,默认为空格。

new_str = "hello hi hhh"
print(new_str.split("h"))
print(new_str.split(" "))
# ['', 'ello ', 'i ', '', '', '']# 可以看出,分割的标志h并没有打印出来。
# ['hello', 'hi', 'hhh']

count(str):求字符串中指定检索内容的个数。

s = "sssss"
print(s.count("ss"))
# 2