-
【2020Python修炼记8】Python语法入门—基本数据类型_字符串
基本数据类型——字符串类型str
1、定义
name = 'Tony'
address = ''上海市浦东新区''
sex = '''男
喜欢面条'''
用单引号、双引号、多引号,都可以定义字符串,本质上是没有区别的,不过需要注意:
#1、需要考虑引号嵌套的配对问题
msg = "My name is Tony , I'm 18 years old!"
#内层有单引号,外层就需要用双引号
#2、多引号可以写多行字符串
msg = '''
天下只有两种人。
比如一串葡萄到手,一种人挑最好的先吃,另一种人把最好的留到最后吃。
照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的;
第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。
不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。
'''
2、作用
用来记录人的名字,家庭住址,性别等描述性质的状态
3、类型转换
# str可以把任意其他类型都转成字符串
>>>
>>> res=str({'a':1})
>>> print(res,type(res))
{'a': 1} <class 'str'>
>>>
4、使用:
4.1 数学运算
数字可以进行加减乘除等运算,字符串呢?也可以,但只能进行"相加"和"相乘"运算。 >>> name = 'tony' >>> age = '18' >>> name + age #相加其实就是简单的字符串拼接 'tony18' >>> name * 5 #相乘就相当于将字符串相加了5次 'tonytonytonytonytony'
4.2 内置方法
4.2.1、按索引取值——(正向取+反向取) :只能取
>>> msg='hello world'
>>> #正向取
>>> print(msg[0])
h
>>> print(msg[5])
>>> #反向取
>>> print(msg[-1])
d
>>> #只能取,不能改写
>>> msg[0]='H'
Traceback (most recent call last):
File "<pyshell#86>", line 1, in <module>
msg[0]='H'
TypeError: 'str' object does not support item assignment
>>>
4.2.2、切片——索引的拓展应用,从一个大字符串中拷贝出一个子字符串
>>> # 顾头不顾尾 # [x:y],--指的是 [x,y)左闭右开的区间 # x--开始的索引号,
# y--在索引号[y-1]结束,取到索引号[y-1] 所指的字符就结束
[0:5],意为 从第一个索引[0]所指的字符开始,取到索引[4],即5个字符
>>>
>>> msg='hello world'
>>> res=msg[0:5]
>>> print(res)
hello
>>> print(msg)
hello world
>>>
>>> #步长
# 依次读取索引 0 2 4 所对应的字符
# [x:y:z],
# x--开始的索引号,
# y--在索引号[y-1]结束,即取到索引号[y-1] 所指的字符就结束,
# z--间隔的索引个数,即从索引[x]开始,每隔z个间隔,依次读取,直到索引号[y-1]结束
[0:5:2],意为 从第一个索引[0]所指的字符开始,每隔2个间隔,读取一个字符,直到取到索引[4],即3个字符
>>> res=msg[0:5:2]
>>> print(res)
hlo
>>>
>>> #反向步长(了解)
>>> msg='hello world'
>>> res=msg[5:0:-1]
>>> print(res)
olle
>>>
>>> msg='hello world'
>>> res=msg[:] # [:]不输入,默认为 res=msg[0:11]
>>> print(res)
hello world
>>> res=msg[::-1] # 把字符串倒过来读取
>>> print(res)
dlrow olleh
>>>
4.2.3、长度 len()
>>>
>>> msg='hello world'
>>> print(len(msg))
11
>>>
4.2.4、成员运算in和not in
>>>
>>> #判断一个子字符串是否存在于一个大字符串中
>>> print("alex" in "alex is sb")
True
>>> print("alex" not in "alex is sb")
False
>>> print(not "alex" in "alex is sb") # 不推荐使用,语法没错,只是不符合一般逻辑思维习惯
False
>>>
4.2.5、移除字符串左右两侧的符号strip(‘字符’)
#注意,字符要用引号括起来
>>>
>>> # 默认去掉的空格
>>> msg=' egon '
>>> res=msg.strip()
>>> print(msg) # 不会改变原值
egon
>>> print(res) # 去除了空格,是产生了新值
egon
>>>
>>> #去掉其他符号
>>> msg='*******egon****'
>>> print(msg.strip('*'))
egon
>>> msg='@@@egon@@*'
>>> print(msg.strip('*'))
@@@egon@@
>>> print(msg.strip('*@'))
egon
>>>
>>> msg='@@@egon@ @ *'
>>> print(msg.strip('*@ '))
egon
>>>
>>> # 了解:strip只去除两边,不去中间
>>> msg='*******eg*****on****'
>>> print(msg.strip('*'))
eg*****on
>>> msg='**/*=-**egon**-=()**'
>>> print(msg.strip('*/-=()'))
egon
>>>
>>> # 应用_自动清除用户手抖输入的多余空格 >>> in_name= input('please input your name:').strip() please input yuor name:' cc' # 为何failed login,原因是这里输入的结果为字符串 ' cc',而不是 字符串 cc,后面的条件判断是字符串 cc >>> in_code= input('please input your code:').strip() please input yuor code:' 123' # 为何failed login,原因是这里输入的结果为字符串 ' 123',而不是 字符串 123,后面的条件判断是字符串 123 >>> if in_name == 'cc'and in_code == '123': print('login successfully') else: print('failed login') failed login
>>> in_name= input('please input yuor name:').strip()
please input yuor name:cc
>>> in_code= input('please input yuor code:').strip()
please input yuor code:123
>>> if in_name == 'cc' and in_code == '123':
print('login successfully')
else:
print('failed login')
login successfully
——————————————————————————
>>> in_name= input('please input yuor name:').strip() please input yuor name:cc >>> in_code= input('please input yuor code:').strip() please input yuor code: 123 #末尾有输入一个空格 >>> if in_name == 'cc'and in_code == '123': print('login successfully') else: print('failed login')
login successfully ———————————————————————————
>>> in_name= input('please input yuor name:').strip()
please input yuor name:'cc' # 为何failed login,原因是这里输入的结果为字符串 ' cc',而不是 字符串 cc,后面的条件判断是字符串 cc
>>> in_code= input('please input yuor code:').strip()
please input yuor code:123
>>>
>>> if in_name == 'cc'and in_code == '123':
print('login successfully')
else:
print('failed login')
failed login
—————————————————————————————
>>> in_name= input('please input yuor name:').strip()
please input yuor name:cc
>>> in_code= input('please input yuor code:').strip()
please input yuor code:123
>>> if in_name == 'cc' and in_code == 123: #将123的引号去掉,则为整型。但是用户输入的是字符串类型,所以后面判断结果为假
print('login successfully')
else:
print('failed login')
failed login
——————————
>>> in_name= input('please input yuor name:').strip()
please input yuor name:cc
>>> in_code= input('please input yuor code:').strip()
please input yuor code:123 >>> in_code=int(in_code) #用户输入的密码,是字符串类型,将其强制转换为整型,再进行条件判断,则结果为真 >>> if in_name == 'cc'and in_code == 123:
print('login successfully')
else:
print('failed login')
login successfully
>>>
4.2.6、切分split:把一个字符串按照某种分隔符进行切分,得到一个列表 # # 默认分隔符是空格
>>> # 默认分隔符是空格
>>> info='cat love mili'
>>> res=info.split()
>>> print(res)
['cat', 'love', 'mili']
>>> # 指定分隔符
>>> info='cat:love:mili'
>>> res=info.split(':')
>>> print(res)
['cat', 'love', 'mili']
>>> # 指定分隔次数(了解)
>>> info='cat:love:mili'
>>> res=info.split(':',1)
>>> print(res)
['cat', 'love:mili']
>>>
4.2.7、循环
>>> 循环输出,即一直循环输出,逐字输出,直到输出完毕
>>> info='cat love mili'
>>> for x in info:
print(x)
c
a
t
l
o
v
e
m
i
l
i
>>>
4.3 需要掌握的其他应用
4.3.1、strip,lstrip,rstrip
>>> msg='*******egon****'
>>> print(msg.strip('*'))
egon
>>> print(msg.lstrip('*')) #去除left左侧
egon****
>>> print(msg.rstrip('*')) #去除right右侧
*******egon
4.3.2、lower,upper
>>>
>>> msg='AAAAAegondddASSss'
>>> print(msg.lower()) #全部转换成小写
aaaaaegondddassss
>>> print(msg.upper())#全部转换成大写
AAAAAEGONDDDASSSS
>>>
4.3.3、startswith,endswith——判断字符串的开头或结尾的子字符
>>>
>>> print('cat love mili'.startswith('cat'))
True
>>> print('cat love mili'.startswith('mili'))
False
>>> print('cat love mili'.endswith('mili'))
True
>>> print('cat love mili'.endswith('cat'))
False
>>>
4.3.4、format——赋值
>>> #逐一将format后面的值赋给{}
>>> res='{} {} {}'.format('cc','18','mili')
>>> print(res)
cc 18 mili
>>> #按照 format后面的值的索引,赋值给对应索引号的{}
>>> res='{1} {0} {1}'.format('cc','18','mili')
>>> print(res)
18 cc 18
>>> res='{0} {2} {1}'.format('cc','18','mili')
>>> print(res)
cc mili 18
>>> #按照 format后面的变量名称,赋值给对应变量名称的{}
>>> res='{name} {age} {lover}'.format(lover='mili',name='cc',age='18')
>>> print(res)
cc 18 mili
>>>
4.3.5、split,rsplit:将字符串切成列表
>>> info='cat:love:mili'
>>> print(info.split(':',1))
['cat', 'love:mili']
>>> print(info.rsplit(':',1))#从右侧开始切片
['cat:love', 'mili']
>>>
4.3.6、join: 把列表拼接成字符串
>>>连接字符串的三种方式:
>>> l=['cat','love','mili']
>>> res=l[0]+":"+l[1]+":"+l[2]
>>> print(res)
cat:love:mili
>>> res=':'.join(l)# 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
>>> print(res)
cat:love:mili
>>> ':'.join(l)
'cat:love:mili'
>>>
4.3.7、replace
>>> info='cat love mili love cat'
>>> print(info.replace('cat','CC')) #未指定个数,默认将全部'cat'替换为'CC'
CC love mili love CC
>>> info='cat love mili love cat'
>>> print(info.replace('cat','CC',)) #未输入替换个数,默认将全部'cat'替换为'CC'
CC love mili love CC
>>> info='cat love mili love cat'
>>> print(info.replace('cat','CC',1)) #输入替换个数为1,将第一个'cat'替换为'CC'
CC love mili love cat
>>> info='cat love mili love cat'
>>> print(info.replace('cat','CC',2)) #输入替换个数为‘cat’的总数,将全部'cat'替换为'CC'
CC love mili love CC
>>> info='cat love mili love cat'
>>> print(info.replace('cat','CC',3)) #输入替换个数超过‘cat’的总数,将全部'cat'替换为'CC'
CC love mili love CC
4.3.8、isdigit
>>>
>>> # 判断字符串是否由纯数字组成
>>> print('123'.isdigit())
True
>>> print('12.3'.isdigit())
False
>>>
>>>
>>> age=input('请输入你的年龄:').strip()
请输入你的年龄:19
>>> if age.isdigit():
age=int(age)
if age > 18:
print('猜大了')
elif age < 18:
print('猜小了')
else:
print('猜对了')
else:
print('请输入数字')
猜大了
>>>
4.4 其他应用的了解
4.4.1、find,rfind,index,rindex,count
# msg='hello egon hahaha'
# 找到返回起始索引
# print(msg.find('e')) # 返回要查找的字符串在大字符串中的起始索引
# print(msg.find('egon'))
# print(msg.index('e'))
# print(msg.index('egon'))
# 找不到
# print(msg.find('xxx')) # 返回-1,代表找不到
# print(msg.index('xxx')) # 抛出异常
# msg='hello egon hahaha egon、 egon'
# print(msg.count('egon'))
4.4.2、center,ljust,rjust,zfill
# print('egon'.center(50,'*'))
# print('egon'.ljust(50,'*'))
# print('egon'.rjust(50,'*'))
# print('egon'.zfill(10))
4.4.3、expandtabs
# msg='hello\tworld'
# print(msg.expandtabs(2)) # 设置制表符代表的空格数为2
4.4.4、captalize,swapcase,title
# print("hello world egon".capitalize())
# print("Hello WorLd EGon".swapcase())
# print("hello world egon".title())
4.4.5、is数字系列
4.4.6、is其他
# print('abc'.islower())
# print('ABC'.isupper())
# print('Hello World'.istitle())
# print('123123aadsf'.isalnum()) # 字符串由字母或数字组成结果为True
# print('ad'.isalpha()) # 字符串由由字母组成结果为True
# print(' '.isspace()) # 字符串由空格组成结果为True
# print('print'.isidentifier())
# print('age_of_egon'.isidentifier())
# print('1age_of_egon'.isidentifier())
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
# isdigit只能识别:num1、num2
# print(num1.isdigit()) # True
# print(num2.isdigit()) # True
# print(num3.isdigit()) # False
# print(num4.isdigit()) # False
# isnumberic可以识别:num2、num3、num4
# print(num2.isnumeric()) # True
# print(num3.isnumeric()) # True
# print(num4.isnumeric()) # True
# isdecimal只能识别:num2
print(num2.isdecimal()) # True
print(num3.isdecimal()) # False
print(num4.isdecimal()) # False
5、格式化字符串的四种方法
https://zhuanlan.zhihu.com/p/110406030
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程