'''
什么是字符串
字符串是以单引号或双引号括起来的任意文本
'abc' "def"
字符串不可变
'''
#创建字符串
str1 = "sunck is a gond man"
str2 = "sunck is a nice man"
str3 = "abc"
'''
字符串运算
'''
#字符串连接
str6 = "sunck is a "
str7 = "good man"
str8 = str6 + str7
print("str6 =",str6)
print("str8 = ", str8)
#输出重复字符串
str9 = "good"
str10 = str9 * 3
print("str10 = ",str10)
#访问字符串中的某一个字符
#通过索引下标查找字符
str11 = "sunck is a good man!"
print(str11[1])
#str11[1] = "a"
#print("str11 = ",str11)
#截取字符串的一部分
str13 = "sunck is a good man!"
#从给定下标处开始截取到给定下标之前
str15 = str13[5:15]
#从头截取到给定下标之前
str16 = str13[0:5]
#从给定下标处开始截取到结尾
str17 = str13[16:]
print("str15 = ",str15)
print("str17 = ",str17)
#判断一个字符是否在字符串里面
str18 = "sunck is a good man!"
print("good" in str18)
print("good" not in str18)
'''
print(~5)
00000101
11111010 #取反
10000110
'''
#格式化输出
print("sunck is good man")
num = 10
str19 = ("sunck is good man")
f = 10.1267
print("num =",num,"str19 =", str19)
# 占位符,没有特殊含义
# %d:整数占位符,%s:字符串占位符, %f :浮点小数占位符
#%.3f:精确到小数点后3位,会四舍五入
print("num = %d, str19 = %s,f = %.3f" % (num,str19,f))
#转移字符 \:将一些字符转换成有特殊含义的字符
#\n
print("num = %d\nstr19 = %s\nf = %.3f" % (num,str19,f))
'''
\\ :保证在代码里\没有特殊的含义
'''
print("sunck \\n is")
#\' \"
print('tom is \'good\' man')
print("tom is \"good\" man")
print("tom is 'good' man")
print('tom is "good" man')
#''' 如果字符串内有很多换行,用\n写在一行不好阅读,''' 中间可以直接换行
print("sunck is good man")
print('''sunck
is
good
man
''')
'''
\t 制表符
'''
print("sunck\tgood")
# 如果字符中,有好多字符串都需要转移,就需要加入好多\,为了简化,Python允许用r表示内部 字符串默认不转移
print(r"\\\t\\")
#1234@163.com
#234@qq.com
#efasf@126.com
#eval(str)
#功能:将字符串str当成有效的表达式来求值并返回计算结果
num1 = eval("123")
print(num1)
print(type(num1))
print(eval("+123"))
print(eval("-123"))
print(eval("12+3"))
print(eval("12-3"))
#print(eval("12a3"))
#len(str)
#返回字符串的长度(字符个数)
print(len("sunck is a good man!"))
#lower(str)将转换字符串中的大写字母改成小写字母
str20 = "SUNCK is a good MAN"
print(str20.lower())
print("str20 = %s" % (str20))
#upper(str)将转换字符串中的小写字母改成大写字母,下面两种都可以实现
print("SUNCK is a good MAN".upper())
str21 = "SUNCK is a good MAN"
print(str21.upper())
#swapcase(str),转换字符串中的小写字母改成大写字母,大写字母改成小写字母
str22 = "SUNCK is a good MAN"
print(str22.swapcase())
#capitalize(str),首字母大写,其他小写
str23 = "SUNCK is a good mAN"
print(str23.capitalize())
#title(),每个单词的首字母大写
str24 = "SUNCK is a good mAN"
print(str24.title())
#character char :都叫字符
#center(width [,fillchar]),返回一个指定宽度的居中字符串,fillchar为填充的字符串,默认是空格填充
str25 = "kaige is a good mAN"
print(str25.center(40,"*"))
#ljust(width [,fillchar]),返回一个指定宽度的左对齐字符串,fillchar为填充的字符串,默认是空格填充
str26 = "kaige is a good mAN"
print(str26.ljust(40, "%"))
#rjust(width [,fillchar]),返回一个指定宽度的右对齐字符串,fillchar为填充的字符串,默认是空格填充
str27 = "kaige is a good mAN"
print(str27.rjust(40, "%"))
#zfill(width),返回一个长度为width的字符串,原字符串右对齐,前面补0
str28 = "kaige is a good mAN"
print(str28.zfill(40))
#cound(str[,start][,end]),返回字符串中str出现的次数,可以指定一个范围,默认是从头到尾,
str29 = "kaige is a very very nice mAN"
print(str29.count("very",15,len(str29)))
#find(str[,start][,end]):从左向右检测str字符串是否包含在字符串中,可以指定范围,默认从头到尾,得到的是第一次出现开始下标,没有返回-1
str30 = "kaige is a very very nice mAN"
print(str30.find("very"))
print(str30.find("good"))
print(str30.find("very",15,len(str30)))
#rfind(str[,start][,end]):从右向左检测str字符串是否包含在字符串中,可以指定范围,默认从头到尾,得到的是第一次出现开始下标,没有返回-1
str31 = "kaige is a very very nice mAN"
print(str31.rfind("very"))
print(str31.rfind("good"))
print(str31.rfind("very",0,15))
#index(str,start=0,end=len(str)):跟find()一样,只不过如果str不存在的时候回报一个异常
str32 = "kaige is a very very nice mAN"
print("xxx")
print(str32.index("very"))
#print(str32.index("veryy"))
print(str32.rindex("very"))
#rindex(str,start=0,end=len(str)):跟rfind()一样,只不过如果str不存在的时候回报一个异常
str32 = "kaige is a very very nice mAN"
print(str32.rindex("very"))
#lstrip()截掉字符串左侧指定的字符,默认为空格
str33 = "*******kaige is a very nice mAN"
print(str33.lstrip("*"))
#rstrip()截掉字符串右侧指定的字符,默认为空格
str34 = "kaige is a very nice mAN******"
print(str34.rstrip("*"))
#strip,截取左右两侧指定的字符串,默认是空格
str35 = "********kaige is a very nice mAN******"
print(str35.strip("*"))
#ord 计算字符的ASCII码
str36 = "a"
print(ord(str36))
#ASCII码对应的字符
str37 = chr(65)
print(str37)
#字符串比较大小
#从第一个字符开始比较,谁的ASCII值大谁就大,如果相等会比较下一个字符的ASCII值大小,那么谁的大谁就大
print("sunck" == "sunck")
print("bzzzz" < "aaaa")
#split(str="",num)
#以str为分隔符截取字符串,如果指定num,则仅截取num个字符串
str38 = "ss*sssfs****aaaa*****ss****555*****ss"
list39 = str38.split("*")
c = 0
for s in list39:
if len(s) > 0:
c += 1
print(c)