VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > 数据分析 >
  • 【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


相关教程