欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[18/04/28 基础数据类型2 与字符串的常用操作方法

程序员文章站 2022-04-04 16:28:57
查看数据类型 : type 一.基础数据的种类 1.int : 整数类型 用于计算 2.str : 字符串类型 储存少量数据 凡是用引号引起来的都是字符串 例如:'sjdi' , '1651' , '[1,2,3]'【'[1,2,3]'这只是字符串不是列表】 3.bool : 布尔值 判断真假,只有 ......

   查看数据类型 : type

 

a = True
print(a,type(a))

True <class 'bool'>      #True 的类型是bool

a = 'shfg'
print(a,type(a))

shfg <class 'str'>       #'shfg'的类型是字符串

a = 5
print(a,type(a))

5 <class 'int'>          #5的类型是int

 

  一.基础数据的种类

  1.int : 整数类型  用于计算

  2.str : 字符串类型 储存少量数据 凡是用引号引起来的都是字符串

      例如:'sjdi' , '1651' , '[1,2,3]'【'[1,2,3]'这只是字符串不是列表】

  3.bool : 布尔值 判断真假,只有两种情况:

      True 1 真 ,False 0 假

  4.list : 列表 可以放入大量的,各种类型的数据,便于操作,而且列表是有序的,有索引值,可切片便于取值。

      list = ['字符串' ,数字 ,bool,[列表],{字典:dict}..]

 

a = input('时间')                           #输入时间1995/1/7
print(a)
b = a.split('/')                            #以“/”分割
print(b,type(b))
c = b[0]                                    #对列表切片取【0】
print(c,type(c))
d = int(c)                                  #转化成int形式
print(d,type(d))

时间1995/1/7
1995/1/7
['1995', '1', '7'] <class 'list'>           #以“/”分割以后
1995 <class 'str'>                          #切片后转换成字符串
1995 <class 'int'>

  5.tuple : 元组 被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。

      例如:(1,2,3...)  ("a","b","c")

  6.dict : 字典 采用键值的形式存储数据。 {键:值}可以储存大量数据,关系型数据。 是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象结合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

      例如: dict = {'name':'老男孩' , #name=老男孩

              'name'_list(列表):['学员甲','乙',...]

              'alex(人名)':{'age'(年龄):20,

                      ’hobby'(爱好):'old_women'

                      }  #对应的是 alex这个字典

              }  #对应的是dict这个字典

  7. set(集合):{'西西','alex'.....}采用大括号,但里面的内容是单独的元素

  二。基础数据的互换

  1. int(整数)<--> str(字符串)

    int ---> str  str(int)

s = 6
p = str(s)
print(p,type(p))

6 <class 'str'>

      str ---> int  int(str)  #条件:字符串必须全部由数字组成。

s = '124'
p = int(s)
print(p,type(p))

124 <class 'int'>

s = 'sfg'   #输入的字符串必须为数字
p = int(s)
print(p,type(p))

ValueError: invalid literal for int() with base 10: 'sfg'
(ValueError:无效的字面意思为int(),基数为10:'sfg')

  2. str(字符串)<---> bool(波尔值)

    1.bool ---> str # 凡是用引号引起来的都是字符串 例:'True' 'False'

    2.str ---> bool 非空即为True, 空字符串即为假。 #一定要区分开

“  ” 与 “” 的区别 :“  ”虽然没有文字,但里面有空格,计算机就会认为它不是空字符。而 “” 里面什么也没有,连空格也没有,所以计算机认为它是一个空字符。

s = '  '
p = bool(s)
print(p,type(p))

True <class 'bool'>

s = ''
p = bool(s)
print(p,type(p))

False <class 'bool'>

  三、字符串的常用操作方法

     1.字符串的索引

       索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推, 截取字符串的一个元素,形成新的字符串

a = 'fiibkdjnbviniuhuhiuw'   #第一个元素“f”为0,依此类推第九个是V
print(a[9])

v
a = 'ioujhjkenji'
print(a['o'])           #输入元素”o“,来找下标

    print(a['o'])       #报错
TypeError: string indices must be integers

       2.字符串的切片

      切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则是顾头不顾腚,且与原来的字符串没有任何关系) 步长的正反决定切片的方向

[18/04/28   基础数据类型2 与字符串的常用操作方法
a = 'fiibkdjnbviniuhuhiuw'
b = a[0:9]   #第九个元素是V,因为顾头不顾腚的原则,所以V没有打上去。因为步长没有写, 所以就默认从左往右数无间隔打了九个字母,
print(b)

fiibkdjnb

a = 'fiibkdjnbviniuhuhiuw'
b = a[0:9:2]  #从左往右无间隔打印默认步长为1,步长为2时,就隔一个打印
print(b)

fikjb

print(a[0:])  #切片的尾索引没有写就默认打印到最后
    
fiibkdjnbviniuhuhiuw   #新打印出来的切片与原字符串没有任何关系

print(a[0:-1])  #尾切片是-1时 就代表字符串中的最后一个元素W

fiibkdjnbviniuhuhiu #顾头不顾腚原则,最后一位元素W没有打印上

print(a[-1:0:-1])  #反向加步长,-1代表最后一位W,0代表第一位F,该命令输入后会让字符串从后向前打一遍

wuihuhuinivbnjdkbii  #顾头不顾腚原则,对于命令print(a[-1:0:-1])来说,最后一位元素是F,所以没有打印上
View Code

              3.首字母大写,其余字母小写

          capitalize  **(重要程度)

a = 'fiibkdjnbviniuhuhiuw'
s = a.capitalize()
print(s)

Fiibkdjnbviniuhuhiuw  #只有首字母大写,其余字母小写

      4.居中  center(长度,'默认为空白')  *(重要程度)

a = 'fiibkdjnbviniuhuhiuw'
s = a.center(50,'*')
print(s)

***************fiibkdjnbviniuhuhiuw*************** 

       5.全大写:upper  全小写:lower    ***(非常重要)

代表应用条件:验证码(可以不用区分大小写)

a = 'fiibkdjnbviniUHUHiuw'
s = a.upper()
print(s)
x = s.lower()
print(x)

FIIBKDJNBVINIUHUHIUW
fiibkdjnbviniuhuhiuw

 用户登录界面后可能需要输入验证码,但为了方便用户,一般都会出现“不区分大小写”这是怎样做到的呢

code = 'xuem'.upper()  #验证码发给你了,验证码为xuem。后面的”upper()“表示将字符串的字母全改为大写
a = input('请输入验证码,不区分大小写:').upper()  #将输入的验证码全改为大写
if a == code:
    print('验证成功')

     6.判断以什么内容开头: starts with               

       判断以什么内容结尾: ends with

            ***(非常重要)

a = 'aifnfnadnkjsni'
print(a.startswith('a'))            #当判断以a开头的时候  整体与个体的概念 "ai"对于a来说是整体,但对于整个字符串来说"ai"是一个小个体

True                                #这是真的

a = 'aifnfnadnkjsni'
print(a.startswith('n'))            #当判断以n开头的时候

False                               #这是假的

#ends with 以什么内容结尾也一样

还有一种用法:检测一段字符串是否存在被检测字符串内 可以切片,切片用逗号隔开

a = 'aifnfnadnkjsni'                  #被检测字符串
b = a.startswith('ifn',1,4)           #检测字符串”ifn“ (1,4)是字符串的切片  检测1到4(ifnf)是不是以"ifn"开头
print(b,type(b)) 

True <class 'bool'> #这是真的

     7.大小写翻转  swapcase    *(重要程度)

a = 'aifnfNADnkjsni'
s = a.swapcase()
print(s)

AIFNFnadNKJSNI

      8.使每个字符串内的单词 的首字母大写    title    *(重要程度)

a = 'ai fnfs#frn$kjs+ni'   #字符串内有各种符号隔开的单词
s = a.title()
print(s)

Ai Fnfs*Frn$Kjs+Ni         #每个隔开的单词首字母全部大写

      9.通过元素找索引  index  find  两种都可以   ***(非常重要)

# index:通过元素找索引,可切片,找不到,报错

# find:通过元素找索引,可切片,找不到,返回-1 【仅限于字符串】

a = 'fiibkdjnbviniUHUHiuw'            #被检索字符串
print(a.find('a'))                    #检查元素”a“
print(a.find('b',4))                  #检索元素”b“  (”b“,4)中4是从第四位开始检索元素”b"
print(a.index('b',4))

#print(a.index('a'))                  #无法搜查到就会报错

-1                                    #find 无法检索到元素”a“ 返回”-1“
8                                     #find 从第四位开始检索的”b“的位置
8

      10.去除前后端的空格,换行符(\n),制表符(\t 即”Tab“键)  

# strip   ***(非常重要)【还可以去除你想去除的元素#只限两端,当遇到不是清除的内容时,就会停下】

a = '         fiibkdjnbviniUHUHiuw'
print(a)
print(a.strip())

         fiibkdjnbviniUHUHiuw
fiibkdjnbviniUHUHiuw
a = '\tfiibkdjnbviniUHUHiuw\n'
print(a)
print(a.strip())

    fiibkdjnbviniUHUHiuw     #前面空格是因为”\t“(相当于Tab键),后面换行是因为”\n“(换行符)

fiibkdjnbviniUHUHiuw

在用户名输入姓名,密码等东西时,如果多打了个空格,就会登不进去或者报错

a = input('请输入用户名')
if a == '小粉嫩':
    print('登录成功')
else:
    print('登录失败')

请输入用户名 小粉嫩            #在”小粉嫩“前面加” “
登录失败                      #系统识别失败

加上".strip()"就可以解决这样的问题

a = input('请输入用户名').strip()
if a == '小粉嫩'.strip():
    print('登录成功')
else:
    print('登录失败')

请输入用户名  小粉嫩
登录成功

去除元素【只能去除两端,无法去除中间部分】

s1 = s.strip('abc')   #在两端去除元素“a”“b”“c”
s = 'ablexsba'
print(s1)

lexs

s = 'ableabcxsba'
s1 = s.strip('abc') #在两端去除元素“a”“b”“c”
print(s1)

leabcxs #消除了两边却没有消除中间部分

还可以单独的消除前面或后面的空白字符:

lstrip:消除前面的空白字符

# rstrip:消除后面的空白字符

 

     11.以什么分割,最终形成一个列表,此列表中不含有分割元素。

      split   str(字符串)---> list(列表) ***(非常重要)

a = 'fiib kdjn bvin iUH UHi uw'       #默认以空格分割
print(a.split())

['fiib', 'kdjn', 'bvin', 'iUH', 'UHi', 'uw']
a = ' ,fiib,kdjn,bvin,iUH,UHi,uw'     
print(a.split(','))                                #以”,“为分割元素

[' ', 'fiib', 'kdjn', 'bvin', 'iUH', 'UHi', 'uw']  #第一个”,“前是” “,所以分割后” “就是一个列表

.split(分割元素,分割次数)

a = ' ,fiib,kdjn,bvin,iUH,UHi,uw'
print(a.split(',',2))

[' ', 'fiib', 'kdjn,bvin,iUH,UHi,uw']   #分割两次形成三个列表

       12.在某些特定的情况下(都是字符串)    

        join    list(列表) ---> str(字符串)

        ***(非常重要)

s = ['alex']              #这里只有一个字符串
print(s,type(s))
s11 = '+'.join(s)         #'  '里面填什么都可以
print(s11,type(s11))

['alex'] <class 'list'>
alex <class 'str'>         #因为只有一个列表所以”  “无影响

s = ['5+2','4']            #有两个字符串
s11 = '*'.join(s)
print(s11)

5+2*4 <class 'str'>          #两个字符串得出一个新的字符串

        13. 替换  .replace (被替换词,替换词,替换次数)

name = '小粉嫩,小粉嫩ijifenf小粉嫩'
print(name.replace('小粉嫩','大铁锤',2))   #替换次数不加默认为全部替换

大铁锤,大铁锤ijifenf小粉嫩

  替换敏感词汇:

s = '我是坂田征四郎,我热爱学习'
s = s.replace('坂田征四郎','*')        #敏感词:坂田征四郎
print(s)

我是*,我热爱学习                       #成功替换


s = '我是李洋,我热爱学习'
s = s.replace('坂田征四郎','*')        #敏感词:坂田征四郎, 字符串内并没有敏感词
print(s)

我是李洋,我热爱学习                     #没有替换,也没有报警,直接打印

 

 

 

       14.公共方法:不单单针对字符串,也可以针对数字。。。

         计算字符串的长度即总个数   len(测量的字符串)

         计算某些元素出现的个数,可切片  .count(搜索元素)

name= 'jdivsdjkidsnjeifsa'
print(len(name))
c0 = name.count('i')
print(c0)
c1 = name.count('z')
print(c1)

18
3
0                           #字符串中没有元素“z”所以为零

切片搜索  .count('搜索元素',起始位,终止位)

 

name= 'jdivsdjkidsnjeifsa'
c0 = name.count('i',-5,-1)   #在-5到-1的切片中找i的存在
print(c0)

1                            #原字符串一共有3个但在-5到-1之间就1个

     15.

# 判断字符串只由字母组成   .isalpha()    得bool  真假(True,False)

# 判断字符串是由字母或数字组成组成的  .isalnum() 得bool  真假(True,False)

# 判断字符串只由数字组成   .isdigit()    得bool   真假(True,False)

msg = 'kfdhhieunjndk'
print(msg.isalpha())                    #判断是由字母组成
msg = 'kfdhhieunjndk123'
print(msg.isalnum())                    #判断是由数字或字母组成
shuzi = '1686456128'
print(shuzi.isdigit())                  #判断是由数字组成

True
True
True

 

        16.format 格式化输出

 

三种方式:

 

1.

 

msg = '我叫{},今年{},爱好{}'.format('太白金星','1500','炼丹')
print(msg)

我叫太白金星,今年1500,爱好炼丹

 

2.   最简单

 

msg = '我叫{0},今年{1},爱好{2},不过已经有{1}年没有{2}'.format('太白金星','1500','炼丹')
print(msg)

我叫太白金星,今年1500,爱好炼丹,不过已经有1500年没有炼丹

 

3.

 

msg = '我叫{a},今年{b},爱好{c}'.format(a='太白金星',b='1500',c='炼丹')
print(msg)

我叫太白金星,今年1500,爱好炼丹

 

     

 

         17.for 循环  (有限循环)

基本结构:

for  变量  in  可迭代对象

pass(# 这里可以添加任何命令)

[18/04/28   基础数据类型2 与字符串的常用操作方法
msg = 'kfdhhieunjndk'
for i in msg:
    print(i)
    print(i+'sb')

k
ksb
f
fsb
d
dsb
h
hsb
h
hsb
i
isb
e
esb
u
usb
n
nsb
j
jsb
n
nsb
d
dsb
k
ksb
View Code