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

查看数据类型 : 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 = ''
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<br />
a = 'ioujhjkenji'
print(a['o'])           #输入元素”o“,来找下标

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

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)<span>) <br /><br />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('登录失败')

请输入用户名  小粉嫩
登录成功<br />

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

<strong>s1 = s.strip('abc')   #在两端去除元素“a”“b”“c”<br />s = 'ablexsba'<br />print(s1) <br /><br />lexs<br /><br /></strong>
<strong>s = 'ableabcxsba'</strong><br /><strong>s1 = s.strip('abc')   #在两端去除元素“a”“b”“c”</strong><br /><strong>print(s1)</strong><br /><br /><strong>leabcxs               #消除了两边却没有消除中间部分</strong>

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

#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.在某些特定的情况下(都是字符串)

joinlist(列表) ---> str(字符串)

***(非常重要)

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

['alex'] <class 'list'>
alex <class 'str'>         #因为只有一个列表所以”  “无影响<br /><br />
s = ['5+2','4']            #有两个字符串<br />s11 = '*'.join(s)         <br />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#字符串中没有元素“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 = ''
print(shuzi.isdigit())                  #判断是由数字组成

True
True
True

16.format 格式化输出

三种方式:

1.

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

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

2. 最简单

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

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

3.

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

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

17.for 循环 (有限循环)

基本结构:

for 变量 in 可迭代对象

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

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

相关推荐