字符串字面量

在字符串中使用单引号,

字符串用单引号引起来的是无法使用单引号的,

那么可以使用双引号把字符串引起来,就可以在字符串中使用单引号。

同理,使用想在字符串中使用双引号,那就用单引号把字符串引起来。

str_0 = "'hello'  world"
print(str_0)  # 'hello'  world
str_0 = '"hello" world'
print(str_0)  # "hello" world

转义字符

一个倒斜杆,后紧跟想要添加到字符串中的字符(尽管它包含了两个字符,但大家公认它是一个转义字符。

转义字符

输出为

\’

单引号

\"

双引号

\t

制表符

\n

换行符

\\

倒斜杆

原始字符串

在字符串开始处的引号前加上r,使他成为原始字符串,原始字符串完全忽略转义字符,输出字符串中的所有倒斜杆。

print('hello\' \\ word\"')  # 单 杠 双
print(r'hello\' \\ word\"') # 原始字符串
print('hello \n word')      # 换行
# 制表符 产生一段空格供输出对齐
print(1, '\t', 0)  # 1      0
print(12, '\t', 0) # 12     0

三重引号字符串多行字符串
(多行字符串下是无法注释,缩进功能无效,包括转义,等都是字符串的以部分,也相当于把一个注释赋值给一个变量了)

str_1 = """
         1
         2
        """
print(str_1)
str_1 = '''
         1
         2
        '''
print(str_1)

字符串索引和切片

字符串中每个字符都是独立的,都拥有索引,包括空字符。

str_1 = 'hello word'
# for i in str_1:
# print(i)
print(str_1[0:])   # 切到尾
print(str_1[:5])   # 从头开始切
print(str_1[0::2]) # 步长
print(str_1[-1:-11:-1]) #输出

字符串的in 和not in操作符(返回值为布尔值)

str_1 = 'hello word'
print('hello' in str_1)    # True 	
print('e' in str_1)        # True 	
print('e' not in str_1)    # False

将字符放入其他字符串

1.加法连接

2.格式化输出

3.f字符串,用花括号代替%s

str_1 = '灰太狼'
str_2 = '23'
print(str_1 + '今年' + str_2 + '岁') # 加法连接
print('%s今年%s岁'%(str_1, str_2))   # %s 占位插入
print(f'{str_1}今年{str_2}岁')       # f字符串

字符串的方法

(没有改变值,而是返回一个新值,如果要改变在将它获取的结果赋值给他自己来改变值)

.upper() 转换为大写

.lower() 转换为小写

.isupper() 检查是否全大写

.islower() 检查是否全小写

str_0 = 'Who are yoU'
print(str_0.upper())    # WHO ARE YOU
print(str_0.isupper())  # False
print(str_0.lower())    # who are you
print(str_0.islower())  # False
# 转换大小写的案例
code = 'Gf6P'    
print('输入验证码', code)  
str_1 = input(":")        # 输入
if str_1.lower() == code.lower(): # 全部转换为小写做比较
    print('验证成功!')
else:
    print('请重新验证!')

isX字符串的方法
is开头的的变量,函数,方法,返回的值一帮是布尔值
.isalpha :只包含字母,非空字符,返回True
.isalnum: 只包含字母和数字,非空,返回True
.isdecimal:只包含数字和字符,非空,返回True
.isspace:只包含空格,制表符,换行符,非空,返回True
.istitle:大写字母开头,其他字母小写的单词,数字,空格。

print('Aa'.isalpha())       # 只能是纯字母 & 非空
print('A1a'.isalnum())      # 只能是纯字母和数字 & 非空
print('1'.isdecimal())      # 只能是纯整数字符 & 非空
print(' \t \n'.isspace())   # 只能是\t \n 空字符 & 非空
print('Aa123'.istitle())    # 只能是大写字符开头
print('AA123'[0].istitle()) # 字符串的索引0是否是大写
# 输入账户必须是纯字符母
# 输入密码必须是纯数字
n = 'root'
p = '123456'
while True:
    name = input('账户:')
    if name.isalpha() != 1:
        print('输入不是纯字母')
    if name == n:
        print('ok')
        break
    else:
        print('账户不正确')
        continue
while True:
    pwd = input('密码:')
    if pwd.isdecimal() != 1:
        print('输入不是纯数字')
    if pwd == p:
        print('登入成功')
        break
    else:
        print('密码不正确')
        continue
print('下次一定!')

检查以什么开头,以什么结尾

.startswith() 检查以什么开头(某字符或字母组合或单词)

.endswith() 检查以什么结尾(某字符或字母组合或单词)

str_1 = 'hello word'
print(str_1.startswith('h'))      # True
print(str_1.startswith('he'))     # True
print(str_1.startswith('hello'))  # True
print(str_1.endswith('d'))        # True
print(str_1.endswith('rd'))       # True
print(str_1.endswith('word'))     # True

切分和拼接接

.split() 把字符串切分为列表

.join()

str_1 = 'a b c d e f g'
x = str_1.split()
print(x)    # 切成列表 ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(''.join(x))  # 拼接 abcdefg 
str_1 = 'a_b_c_d_e_f_g'
print(str_1)
a = str_1.split('_')   # 以_切分为类型类型存放
b = '_'.join(a)        # 以_拼接会字符串
print(a)
print(b)

分隔字符串

partition() 以_分隔前后前后。返回三个值。

1.之前的文本 分隔符 之后的文本,如果传入的字符在字符串中有多个,以第一个为准。

2.如果传入的字符,不存在于字符串中,字符串整体做一个值输入,剩余两个值空位。

3.将它的返回值赋值给三个变量

str_1 = 'a b c d e d g'
print(str_1.partition('d')) # ('a b c ', 'd', ' e d g')
print(str_1.partition('1')) # ('a b c d e d g', '', '')
a, b, c = str_1.partition('d')
print(a, b, c)              # a b c  d  e d g

文本对齐

.sjust() 传入一个整数x,插入x个空字符对齐文本,右对齐,文本内存填充空格。

.ljust() 传入一个整数x,插入x个空字符对齐文本,左对齐,文本内存填充空格。

.center() 传入一个整数x,插入x个空字符对齐文本,居中,文本内存填充空格。

第一个参数是产生的空格。第二个参数是代替空格的的符号。

print(1, '123'.rjust(9))       # 右对齐 1       123   
print('123'.ljust(9),1)        # 左对齐 123       1
print('123'.center(10, '-'))   # 居中    ---123----
# x 为左对齐的空格
# y 为右对齐的空格
# z 字典为参数传入

def a(x, y, z):
    print('zoo'.center(x + y - 1, '-') + '$')
    for k, v in z.items():               # 迭代取值
        print(k.ljust(x, '-'), end='')   # 抑制换行
        print(str(v).rjust(y))           # 只对字符进行操作,整型使用str()


zoo = {'Tiger': 80, 'Monkey': 30, 'Elephant': 50}
a(20, 5, zoo)

删除字符

.strip() 删前后指定字符 。

.lstrip() 删除首部字符。

.rstrip() 删除尾部字符。

(参数会按每个字母来进行筛选并删除)

print('--123--')                # --123--	 
print('--123--'.strip('-'))     # 123
print('--123--'.lstrip('-'))    # 123--
print('--123--'.rstrip('-'))    # --123
print('--123--'.lstrip('-1'))   # 23--
print('--123--'.rstrip('-3'))   # --12

字符串的数字(Unicode编码)

计算机内部存存储的是二进制,Unicode编码用特点的一组二进制表示一个字母。

每个文本字符都应着一个相对应的数字值,称为Unicode代码点

.ord() 获取一个单字符的代码点(整数)

.chr() 获取一个整数代码点的单字符(字符)

for i in range(97, 123):
    print(chr(i), end='\t')
print()
for i in range(ord('a'), ord('z')+1):      # 把字符转为整数迭代,z转整数加1
    print(i, end='\t')