基础数据类型之字符串
字符串
-
加了引号的字符就是字符串类型
-
用于标识:描述性的内容,如姓名,性别,国籍,种族
-
字符串 常用单引号
-
双引号 :msg = "My name is Egon , I'm 18 years old!"
-
多引号:msg = '''
二零一九年
七月四号
天气晴
'''
多行字符串用多引号,可以换行。可以写诗!!!!
-
msg = '''
天不生我李淳罡
剑道万古如长夜
'''
print(msg)
- ```python
a = '天不生我李淳罡\n'
b = '剑道万古如长夜\n'
print(a,b,sep='')
-
字符串的拼接:字符串之间可以进行相加“+”
字符串与int之间可以进行相乘“*”
字符串格式化
1,%-formatting语句
-
s%,字符串类型的占位符
-
d%,数字类型的占位符
-
%%转换成普通的%号
-
#%s字符串占位符:可以接收字符串,也可接收数字 print('My name is %s,my age is %s' %('egon',18)) #%d数字占位符:只能接收数字 print('My name is %s,my age is %d' %('egon',18)) print('My name is %s,my age is %d' %('egon','18')) #报错 #接收用户输入,打印成指定格式 name=input('your name: ') age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d print('My name is %s,my age is %s' %(name,age)) #注意: #print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
-
name = input('请输入您的姓名:') age = input('请输入你的年龄:') hobby = input('你的爱好时什么啊:') job = input('请输入你的职业:') num = input('请输入你的电话号码:') speciality = input('你的特长是什么:') msg = ''' ------------info of %s ----------------- Name : %s Age : %s Hobby : %s Job : %s Num : %s Speciality : %s -----------------end----------------------''' print(msg %(name,name,age,hobby,num,job,speciality,))
2,f-string
-
f-string,亦称为格式化字符串常量(formatted string literals)
-
f-string用大括号 {} 表示被替换字段,其中直接填入替换内容:
-
>>> name = 'Eric' >>> f'Hello, my name is {name}' 'Hello, my name is Eric'
-
>>> number = 7 >>> f'My lucky number is {number}' 'My lucky number is 7'
-
>>> price = 19.99 >>> f'The price of this book is {price}' 'The price of this book is 19.99'
-
-
表达式求值与函数调用
-
f-string的大括号 {} 可以填入表达式或调用函数,Python会求出其结果并填入返回的字符串内
-
>>> f'A total number of {24 * 8 + 4}' 'A total number of 196'
-
>>> name = 'ERIC' >>> f'My name is {name.lower()}' 'My name is eric
-
-
引号、大括号与反斜杠
-
f-string大括号内所用的引号不能和大括号外的引号定界符冲突,可根据情况灵活切换 ' 和 ":
-
>>> f'I am {"Eric"}' 'I am Eric' >>> f'I am {'Eric'}' File "<stdin>", line 1
-
若 ' 和 " 不足以满足要求,还可以使用 ''' 和 """:
-
>>> f"He said {"I'm Eric"}" File "<stdin>", line 1 f"He said {"I'm Eric"}" ^ SyntaxError: invalid syntax >>> f'He said {"I'm Eric"}' File "<stdin>", line 1 f'He said {"I'm Eric"}' ^ SyntaxError: invalid syntax >>> f"""He said {"I'm Eric"}""" "He said I'm Eric" >>> f'''He said {"I'm Eric"}''' "He said I'm Eric"
-
3,str.format()函数
字符串的用法
1,字符串索引
-
通过索引可以精确地找到元素的位置
-
name = 'david'
-
david 每一个字母代表一个元素,
-
从左向右,从零开始记位
- d(0),a(1),v(2),i(3),d(4)
-
从右向左,从-1开始记位,到-n结束
- d(-5),a(-4),v(-3),i(-2),d(-1)
-
索引的时候索引超出范围的时候会报错
2,字符串切片slice
-
切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。
格式: [start🔚step]
-
语法
-
s[start: end: step] start: 起始位置 end: 结束为止。取不到 step: 步长。 每隔xx个取1个。 默认是1 如果step是-1 从右往左取值
-
-
顾头不顾尾,print(name[起始位置:终止位置])
-
name='david' print(name[0:2]) print(name[0:4:2]) result da dv
-
-
print(name[:]),某个位置不指定的时候默认取到最后 或取到最前
-
name = 'david' print(name[:]) print(name[0:]) print(name[0:5]) result david david david
-
-
实例:
-
s = 'Python最NB' 获取s字符串中前3个内容 获取s字符串中第3个内容 获取s字符串中后3个内容 获取s字符串中第3个到第8个 获取s字符串中第2个到最后一个 获取s字符串中第1,3,5个内容 获取s字符串中第2,4,6个内容 获取s字符串中所有内容 获取s字符串中第4个到最后一个,每2个取一个 获取s字符串中倒数第5个到最开始,每3个取一个 s = 'Python最NB' print(s[0:3]) print(s[2]) print(s[6:])#print(s[-3:]) print(s[2:8]) print(s[1:]) print(s[0:6:2]) print(s[1:7:2]) print(s[:]) print(s[3::2]) print(s[-5::-3]) result: Pyt t 最NB thon最N ython最NB Pto yhn Python最NB hnN oy
-
切片的时候起始位置和终止位置都超出是运行不会报错
-
字符串的方法
-
字符串全部大写:upper
-
name = 'David' name1 = name.upper() print(name1) result DAVID
-
-
字符串全部小写:lower
-
name = 'David' name1 = name.lower() print(name1) result david
-
-
实列:验证码输入
-
while True: code = input('请输入验证码:') code_check = 'David' if code_check.upper() == 'David'.upper(): print('输入正确') break else: print('输入错误')
-
-
开头结尾的判断
-
开头:字符串.startwith()
-
name = 'David' name1 = name.startswith('D') name2 = name.startswith('d') name3 = name.startswith('a',1,3) print(name1,name2,name3) result True False True
-
-
结尾:字符串.endswith()
-
name = 'David' name1 = name.endswith('d') name2 = name.endswith('D') name3 = name.endswith('a',1,3) print(name1,name2,name3) result True Fals False
-
-
count():计数计算字符或数字出现的次数
-
name = 'david255' print(name.count('2')) print(name.count('5')) print(name.count('d')) result 1 2 2
-
-
split():切割,以空格和换行符以及制表符进行分割,切割得到的是列表
-
语法解释 S.split(sep=None, maxsplit=-1) -> list of strings sep -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等 maxsplit -- 分割次数
-
name = 'david' print(name.split()) print(name.split.('a')) print(name.split('d',1)) print(name.split('d')) result ['david'] ['d', 'vid'] ['', 'avid'] ['', 'avi', '']
-
msg='hello world egon say hahah' print(msg.split()) #默认以空格作为分隔符 result ['hello', 'world', 'egon', 'say', 'hahah']
-
-
strip():官方解释
-
S.strip([chars]) -> str Return a copy of the string S with leading and trailing whitespace removed. If chars is given and not None, remove characters in chars instead. 翻译: 若chars为未给定,则删除字符串头尾的空白字符,包括\r,\t\,\n和空格; 若chars给定,则删除字符串头尾,位于chars中的字符。注意,无顺序要求。
-
-
移除空白
-
msg = ' hello, world ' print(msg.strip()) result hello world
-
-
另外,strip()方法还有两个变体:
S.lstrip(chars) 删除s字符串中开头处,位于 chars删除序列的字符
S.rstrip(chars) 删除s字符串中结尾处,位于 chars删除序列的字符
-
msg = '**hello,world***' print(msg.strip('*')) print(msg.lstrip('*')) print(msg.rstrip('*')) result hello,world hello,world*** **hello,world
-
-
指定删除字符串中的内容
-
name = 'david' print(name.strip(d)) result avi
-
-
实例
-
while True: name=input('user: ').strip() password=input('password: ').strip() if name == 'egon' and password == '123': print('login successfull')
-
-
replace:语法解释
-
str.replace(old, new[, max]) old:将要被我们替换的旧的字符串 new:新字符串,用来替换旧的字符串(替换一次或者多次old) max:用来替换的次数,这里有两种:(1)当不将max参数传入时,默认将所有old字符或者字符串替换为new字符或者字符串;(2)当我们将max参数传入后,则将旧字符串替换为新字符串不超过max次,多余的则不进行替换 返回值:返回的字符串中的old(旧字符串)替换为new字符串后生成的心的字符串,如
-
name='alex say :i have one tesla,my name is alex' print(name.replace('alex','SB',1)) result SB say :i have one tesla,my name is alex
-
-
is
-
str.isdigit :判断字符窜是不是都是数字
-
str.isalpha:判断是不是字母,中文
-
str.isdecimal:判断是否是十进制
-
str.isalnum:判断是不是字母,数字,中文
-
print(s.isalnum()) print(s.isalpha()) print(s.isdigit()) print(s.isdecimal())
-
-
-
for in:可迭代循环
-
数据类型中只有整型和布尔值不能进行for循环
-
语法:for iter_var in list: for i in - iter_var是迭代变量,指向序列对象的元素 - list是可迭代对象 - 语句块是循环体,在循环体中可以使用iter_var访问可迭代对象的元素。
-
name = 'david' for i in name: print(i) result d a v i d
-
name = 'david' for i in name: print(i) print(i) result d a v i d d
-