"""
字符串是用 "" 和 '' 括起来的文本 不包含引号。
字符串是不可变的
空格也是属于字符串的
C语言 '' 字符 ,"" 字符串
"""
# 字符串的定义:
# 变量 = 字符串
str = "Hellow world!"
# 字符串的连接 +
str1 = "Hellow"
str2 = " World"
str3 = str1 + str2
print("str1 + str2 =",str3)
print("str1 + str2 =",str1 + str2)
print(str1 + str2)
# 字符串的重复输出: *
str4 = "Hellow"
print(str4 * 3)
# 字符串中某个字符的截取
# 通过索引字符串 字符下标的方式进行查找截取
# 截取方式: 字符串[下标] 是 前闭后开型
# 下表从 0 开始空格也算是字符。
str5 = "Hellow World!"
# 指定str5[0:5] = "Hellow" 字符串不可变。
print(str5[3:5]) # 从给定下标开始到给定下标之前
print(str5[:5]) # 头开始到给定下标 之前
print(str5[2:]) # 从给定下标开始到 结尾
# 若结尾处超过字符串下标最大数 则到输出到字符串末尾
# 格式化输出:
# %d %f(遇到 5 可以进1) %s 占位符
num1 = 104
flo = 10.2256
str6 = "Hellow"
print("数字 = %d,小数 = %.3f 字符串 = %s" % (num1, flo, str6))
print("num1 =", num1, "flo =", flo, "str6 =", str6)
# 转义符 \ 把一个字符转义
print("How \"old\" are you?") # 在不加入 \ 时输出有错误。转义符吧 "" 转义成一个文本
print("How 'old' are you?") # 或者是这样
print('How \'old\' are you?')
print('How "old" are you?')
print("How old \\are\\ you?") # 输出\ \ 时 转义 \
# 当要输出的字符串中有很多需要转义时可在字符串前面加 r 表示字符串中默认不转义 在用 路径 的时候常见
print(r"Hollow world! \new peolpe") # 不转义 n
# \n 换行符 \t 制表符
# eval(str) 可以把字符串转化为有效表达式,求值,并返回计算结果
print(eval("123 + 222"))
# print(eval("1a23")) 错误,不能识别是字符串还是整数
print(eval("-123"))
print(eval("+223"))
# len(str)
# 输出字符串的长度(字符串中字符的个数)
str6 = "Ji ning xue yuan Juyan"
print(len(str6))
# str.lower() 转换字符串中的大写字母为小写字母
str7 = "Ji ning xue yuan JUYAN"
print(str7.lower())
print(str7.lower())
# swapcase() 转换字符串中大写字母为小写字母 小写字母为大写字母
str8 = "Ji ning XUE Yuan Juyan"
print(str8.swapcase())
# capitalize() 首字母大写其余小写
str9 = "Ji Ning xue YUan Juyan"
print(str9.capitalize())
# character = char
# center(width[,fillchar]) 返回一个指定len的居中字符串,fillchar为填充的字符串,默认为空格填充。
str10 = "Ji ning xue yuan Juyan"
print(str10.center(40,"-"))
print(str10.center(40))
# ljust() 返回一个指定len的左对齐字符串(靠左),fillchar为填充的字符串,默认为空格填充。
str11 = "Ji ning xue yuan Juyan"
print(str11.ljust(40,"-"))
print(str11.ljust(40))
# rjust() 返回一个指len的右对齐字符串,fillchar为填充的字符串,默认为空格填充。
str12 = "Ji ning xue yuan Juyan"
print(str12.rjust(40,"-"))
print(str12.rjust(40))
# zfill(width) 返回一个len为 width 的字符串,原字符串右对齐,前面补 0
str13 = "Ji ning xue yuan Juyan"
print(str13.zfill(40))
# count(str[,start][,end]) 返回字符串中指定 str 出现的次数 可以指定范围。
str14 = "Ji ning xue yuan Juyan"
print(str14.count("xue"))
print(str14.count("xue",7,len(str14)))
# find(str[,start][,end]) 从左到右检测字符串中是否含有 str ,可以指定范围,默认从头到尾,
# 得到的是第一次出现的开始下标,没有则会返回-1
str15 = "Ji ning xue yuan Juyan"
print(str15.find("xue",7,len(str15)))
print(str15.find("bb"))# 没有则返回 -1
# rfind(str[,start][,end]) 从右到左检测字符串中是否含有 str ,可以指定范围,默认从尾到头,
# 得到的是第一次出现的开始下标,没有则会返回-1
str16 = "Ji ning xue yuan Juyan"
print(str16.rfind("xue",7,len(str16)))
# index(str[,start][,end]) 同find 不过,在str不存在的时候不会返回 -1 但会报错
str17 = "Ji ning xue yuan Juyan"
print(str17.index("ning"))
# rindex(str[,start][,end]) 同rfind 不过,在str不存在的时候不会返回 -1 但会报错
str18 = "Ji ning xue yuan Juyan"
print(str17.rindex("ning"))
# lstrip() 截掉字符串左侧指定字符,默认为空格
str19 = " *****Ji ning xue yuan Juyan******"
print(str19.lstrip())
# rstrip() 截掉字符串右侧指定字符,默认为空格
str20 = " ********Ji ning xue yuan Juyan ********"
print(str20.rstrip("*"))
# strip() 截掉字符串两侧指定字符,默认为空格
str21 = "********Ji ning xue yuan Juyan********"
print(str21.strip("*"))
# 字符串的比较:< > == 从第一个字符开始比较 ASCII码的大小,谁的大谁就大,
# 如果相等,则就继续比较下一个字符的ASCII码谁大谁就大。
print("abs" > "abc")
print("abc" == "abc")
# split(str='',num)
# 以指定str字符截取, num 是截取的次数,返回一个列表,len(list)是num+ 1,
str22 = 'Hellow World! I am jy'
print(str22.split(' ', 3))
# 以' ' 为截取字符串,计算输入单词的个数(含有重复空格):
str23 = 'ni hao sada sdii ddi di ds dsf '
print(str23.split(' '))
c = 0
for i in str23.split(' '):
if len(i) > 0: # 删选空字符
c += 1
print(c)
# splitlines([keepends]) 以'\n' '\r\n' '\n'为分隔符
# keepends == True 会保留换行符。
str24 = """fu qiang zhong guo
zu guo wan cui
shi jie he ping
"""
print(str24.splitlines())
print(str24.splitlines(True))
# join(seq) 以指定字符,将seq中所有元素组成一个字符串,以指定字符串分隔组合seq
list2 = ['ni','nide','nidehao']
print('#$&'.join(list2))
# replace(oldstr,newstr,count)
# 重新返回一个字符串,替换oldstr 为 newstr , count为替换前count个
str25 = 'sunck is a good good good man!'
str25.replace('good','nice',2) # str25并没有改变,字符串是不可以改变的,
str26 = str25.replace('good','nice')
print(str25)
print(str26)
# 创建一个字符映射表:
t27 = str.maketrans('od','90')
# 被转换字符 转换字符
str28 = 'sunck is a good good good man!'
print(str28.translate(t27))
# startswith("str",start,end= -1 ) 在指定范围内判断是否以指定字符开头,默认指定整个字符串。
str29 = 'sunck is a good good good man!'
print(str29.startswith('sunck',0,16))
# endswith("str",start,end= -1 ) 在指定范围内判断是否以指定字符结尾,默认指定整个字符串。
str30 = 'sunck is a good good good man'
print(str30.endswith('man',9,))
# 编码 encode(encoding = 'utf-8',error = 'strict/ignore')
str31 = 'sunck is a good good good man!好'
data1 = str31.encode('utf-8')
print(data1)
print(type(data1)) # 变为 二进制
# 解码: 注意要和编码时的格式一样。
str32 = data1.decode("utf-8")
print(str32)
# 其他:
# 编码:
data1 = str31.encode('utf-8','ignore')
print(data1)
# 解码:
str32 = data1.decode("gbk",'ignore') # 出现乱码。
print(str32)
# isalph() 字符串中至少有一个字符,判断字符串是否全是字母。若是则返回 True 否则返回False。
str33 = 'sunckisagoodgoodgoodman'
print(str33.isalpha())
# isalnum() 字符串中至少有一个字符,判断字符串是否全是字母或者是数字。若是则返回 True 否则返回False。
str34 = 'sunck is a good good good man666'
print(str34.isalnum())
# isupper() 字符串中至少有一个英文字符,判断英文字符是否全是大写。若是则返回 True 否则返回False。
print("ABF%1".isupper())
print("1".isupper())
print("AB".isupper())
# islower() 字符串中至少有一个英文字符,判断英文字符是否全是小写。若是则返回 True 否则返回False。
print("abc&1d".islower())
print("abcd".islower())
print("3".islower())
# istitle() 判断字母是否首字母大写
print("Sunck Is A Good Man!".istitle())
# isdigit() 判断是否全是数字
# isnumeric() 同上
# isdecimal() 判断字符串是否全是十进制:
print("123".isdecimal())
print("123w".isdecimal())
# isspace() 判断字符串是否全是空格。
print("\t".isspace())
print("\n".isspace())
print("\r".isspace())
print(" ".isspace())
output:
str1 + str2 = Hellow World
str1 + str2 = Hellow World
Hellow World
HellowHellowHellow
lo
Hello
llow World!
数字 = 104,小数 = 10.226 字符串 = Hellow
num1 = 104 flo = 10.2256 str6 = Hellow
How "old" are you?
How 'old' are you?
How 'old' are you?
How "old" are you?
How old \are\ you?
Hollow world! \new peolpe
345
-123
223
22
ji ning xue yuan juyan
ji ning xue yuan juyan
jI NING xue yUAN jUYAN
Ji ning xue yuan juyan
---------Ji ning xue yuan Juyan---------
Ji ning xue yuan Juyan
Ji ning xue yuan Juyan------------------
Ji ning xue yuan Juyan
------------------Ji ning xue yuan Juyan
Ji ning xue yuan Juyan
000000000000000000Ji ning xue yuan Juyan
1
1
8
-1
8
3
3
*****Ji ning xue yuan Juyan******
********Ji ning xue yuan Juyan
Ji ning xue yuan Juyan
True
True
['Hellow', 'World!', 'I', 'am jy']
['ni', '', '', 'hao', '', 'sada', '', '', 'sdii', '', '', 'ddi', 'di', '', 'ds', '', 'dsf', '']
8
['fu qiang zhong guo', 'zu guo wan cui', 'shi jie he ping ']
['fu qiang zhong guo\n', 'zu guo wan cui\n', 'shi jie he ping \n']
ni#$&nide#$&nidehao
sunck is a good good good man!
sunck is a nice nice nice man!
sunck is a g990 g990 g990 man!
True
True
b'sunck is a good good good man!\xe5\xa5\xbd'
sunck is a good good good man!好
b'sunck is a good good good man!\xe5\xa5\xbd'
sunck is a good good good man!濂
True
False
True
False
True
True
True
False
True
True
False
True
True
True
True
Process finished with exit code 0