当前位置: 首页 > news >正文

python第二周数据类型 字符编码 文件处理

第一数据类型需要学习的几个点:

用途

定义方式

常用操作和内置的方法

 

该类型总结:

可以存一个值或者多个值

只能存储一个值

可以存储多个值,值都可以是什么类型

 

有序或者无序

 

可变或者不可变

二:数字整数与浮点

age=10

 

浮点类型

salary=float(300.3)

 salary=300.03 print(salary)

 

salary=300.03  
print(salary)


长整形(了解)
    在python2中(python3中没有长整形的概念):      
    >>> num=2L
    >>> type(num)
    <type 'long'>

#复数(了解)  
    >>> x=1-2j
    >>> x.real
    1.0
    >>> x.imag
    -2.0  

第三 字符串的用法


name='egon'

优先掌握的操作:
1.字符串按照索引取值,正向取值反向取值,步长,反向取值步长2.字符串切片
print(aa[-5:])  取倒数5个数
 
name='hello word'
#字符串从0开始  
print(name[0])
#字符串0到5
print(name[0:5])
#倒数第二个,反着取数
print(name[-2])

#第五个是空格,反着取步长是1,负号代表反着取值,
# oll   5432   顾头不顾尾
print(name[5:1:-1])
附加说明:字符串取得值是新获取的值新的内存空间,原来的字符串没有改变

3.长度字符串长度
print(len(name))
10

4.成员运算in和not in
print('hello' in  name)
print('hello' not in  name)
print('eeee' not in  name)
True
False
True

第五移除空白

name='  egon  '

print(name.strip())
print(name.lstrip())
print(name.rstrip())

name2='**egon**'

print(name2.strip('*'))
print(name2.lstrip('*'))
print(name2.rstrip('*'))

egon
egon 
  egon
egon
egon**
**egon

6.切分split

name='jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false'

cc=name.split(':')

print(cc)
print(cc[0])

print(name)

['jenkins', 'x', '997', '995', 'Jenkins Automation Server', '/var/lib/jenkins', '/bin/false']
jenkins
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
 
 

 循环

name='jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false'


print(list(name))
['j', 'e', 'n' .....] 放入了类表中

for i in name
  print i

切片:第二个参数1表示切得次数
file_path='C:\\a\\d.txt'
print(file_path.split('\\',1))
#['C:', 'a\\d.txt']
print(file_path.split('\\'))
#['C:', 'a', 'd.txt']

循环
只有0的时候才能省略开始的位置range(0,10,2)   range(10)

for i in range(0,10,2):
    print(i)


for i in range(10):
    print(i)
    
    

name='hello word'

for i in range(len(name)):
    print(name[i])
    

第二掌握的
#1、strip,lstrip,rstrip
# print("**alex****".strip('*'))
# print("**alex****".lstrip('*'))
# print("**alex****".rstrip('*'))

#2、lower,upper
# print('ALeX'.lower())
# print('aaa'.upper())

3.startswith,endswith

name='hello word'

print(name.startswith('h'))
print(name.startswith('hello'))
print(name.endswith('d'))

4.format的三种用法
print('my name is %s age is %s ttt' %('egon',18))

print('my name is {} age is {}'.format('egon',18))

print('my{0} name is {1} age {1} i  {0} s {1}'.format('egon',18))

print('my{name} name is {pp} age'.format(pp=18,name='egon'))


5.split和join

info='root:x:0:0'
l=info.split(':')
print(l)

print(':'.join(l))
print(''.join(l))


6.replace 替换和全部替换.


info='root:x:0:0'


print(info.replace(':','==',2))
print(info.replace(':','=='))

7.isgigit
aa='55'
print(aa.isdigit())

aa=55
print(aa.isdigit())
#AttributeError: 'int' object has no attribute 'isdigit' 下面的报错init 不能用这个方法,只有字符串才行
 
 
#1、find,rfind, 

index,rindex,  查找字符串对应的索引数字

count  统计字符串出现的次数

aa='tt  hello word hello wordhello word'


print(aa.index('h'))

name='egon say hello'
print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
print(name.find('o')) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引





#2、center,ljust,rjust,zfill  对齐填充字符
#3、expandtabs   修改tab键默认的空格为指定的空格,修改4个空格为多个
#4、captalize,swapcase,title   大写首字母或者单词
#5、is数字系列  是否数字 ,罗马数字和汉字数字是否数字
#6、is其他



#1、strip,lstrip,rstrip
#2、lower,upper
#3、startswith,endswith
#4、format的三种玩法
#5、split,rsplit
#6、join
#7、replace
#8、isdigit

复制代码

 

复制代码
#strip
name='*egon**'
print(name.strip('*'))
print(name.lstrip('*'))
print(name.rstrip('*'))

#lower,upper
name='egon'
print(name.lower())
print(name.upper())

#startswith,endswith
name='alex_SB'
print(name.endswith('SB'))
print(name.startswith('alex'))

#format的三种玩法
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

#split
name='root:x:0:0::/root:/bin/bash'
print(name.split(':')) #默认分隔符为空格
name='C:/a/b/c/d.txt' #只想拿到顶级目录
print(name.split('/',1))

name='a|b|c'
print(name.rsplit('|',1)) #从右开始切分

#join
tag=' '
print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串

#replace
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1))

#isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input('>>: ')
print(age.isdigit())

复制代码

 其他操作(了解即可)

#1、find,rfind,index,rindex,count
#2、center,ljust,rjust,zfill
#3、expandtabs
#4、captalize,swapcase,title
#5、is数字系列
#6、is其他

 

复制代码
#find,rfind,index,rindex,count
name='egon say hello'
print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index('e',2,4)) #同上,但是找不到会报错
print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有

#center,ljust,rjust,zfill
name='egon'
print(name.center(30,'-'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(50)) #用0填充

#expandtabs
name='egon\thello'
print(name)
print(name.expandtabs(1))

#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='egon say hi'
print(msg.title()) #每个单词的首字母大写

#is数字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='' #中文数字
num4='' #罗马数字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
'''
总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric
'''

#is其他
print('===>')
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())

复制代码

 

 

第四: 列表:

#优先掌握的操作:
#1、按索引存取值(正向存取+反向存取):即可存也可以取   
name=['aa','bb','cc']

print(name[0])
print(name[-2:]) #取倒数两个值
print(name[:-1]) #取除了最后一个值剩下的值,或者说所有值除了最后一个
name[1]='xx'
print(name)   
#2、切片(顾头不顾尾,步长)
print(name[1:3])
#3、长度
print(len(name))
#4、成员运算in和not in
print('aa' in name)
print('aa' not in name)
#5、追加
name=['aa','bb','cc','dd','ee']
print(name.append('tt'))
print(name)
['aa', 'bb', 'cc', 'dd', 'ee', 'tt']
#6、删除
name=['aa','bb','cc','dd','ee']
vl=name.pop()  # pop的删除值还可以获取到删除的值,默认从右到左删除
#name.remove('tt') #remove单纯删除
vl=name.pop(2) #cc 指定了值就是制定索引值从左到右
print(vl)
print(name)
结果
# ['aa', 'bb', 'cc', 'dd']


name=['aa','bb','cc','dd','ee']
name.insert(1,'66') #在索引1的位置插入值,或者说在一之前插入值
# name.clear() #清空整个列表
print(name)

name=['aa','bb','cc','dd','ee']
name.insert(1,'66') #在索引1的位置插入值,或者说在一之前插入值
# name.clear() #清空整个列表
name.reverse() #反过来显示
print(name)

#下面是显示索引号
# my_girl_friends=['alex','wupeiqi','yuanhao','yuanhao',4,5]
# print(my_girl_friends.index('wupeiqi'))
# print(my_girl_friends.index('wupeiqissssss'))

#反转排序

# l=[1,10,4,11,2,]
# l.sort(reverse=True)
# print(l)
l.sort(reverse=True)

l=['egon','alex','wupei']
l.sort()
print(l)
#首字母排序
#['alex', 'egon', 'wupei']

#7、循环
# my_girl_friends=['alex','wupeiqi','yuanhao',4,5]

# i=0
# while i < len(my_girl_friends):
#     print(my_girl_friends[i])
#     i+=1

# for item in my_girl_friends:
#     print(item)

# for i in range(10):
#     if i== 3:
#         break
#         # continue
#     print(i)
# else:
#     print('===>')

 

 

元组:元组和列表相似,但是元组是不可变类型(不可变类型可以当做字典的key).如果用于只读可以使用元组

aa=(11,22,33,44,55)

print(type(aa))


#元组里面可以存放列表,列表里面的元素可以修改,但是列表整体不能修改替换为别的值
t=(1,2,['a','b'])
print(id(t[2]))
t[2][0]='A'
print(id(t[2]))
print(t)

age=(11,22,33,44,55)

print(type(age))

print(age.index(33))
#print(age.index(33333))  #不存在的索引报错

print(age.count(3333))

============


msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}

for i in msg_dic:
    print('可购买的商品:', i, '个数', msg_dic[i])
goods=[]
while True:
    sp = input("输入买的商品:")
    if sp not in msg_dic:
        print('输入的商品不存在.')
        continue
    while True:
        gs=input("输入买的个数:")
        if not gs.isdigit():
            print('输入的个数不是数字')
            continue
        break
    goods.append((sp,gs))

    print(goods)
============================
字典:
#作用:存多个值,key-value存取,取值速度快

#定义:key必须是不可变类型,value可以是任意类型
info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
或
info=dict(name='egon',age=18,sex='male')
或
info=dict([['name','egon'],('age',18)])
或
{}.fromkeys(('name','age','sex'),None)

#优先掌握的操作:
#1、按key存取值:可存可取
print(info['sex'])
取值:
for i in info:
    print(i)
设置值: dict.setdefault(key,defvalue)  #设置一个默认值,如果有这个值就用原来的值,如果没有就使用新的复制
info={'name':'egon','age':18,'sex':'male'}

info.setdefault('tt',66)
info.setdefault('name','erdan')

print(info)

#{'name': 'egon', 'age': 18, 'sex': 'male', 'tt': 66}
    
    
#2、长度len

info={'name':'egon','age':18,'sex':'male'}
print(len(info))
3

#3、成员运算in和not in  根据key来说
info={'name':'egon','age':18,'sex':'male'}

print(len(info))

print('name' in info)
print('egon' in info)

#4、删除
info={'name':'egon','age':18,'sex':'male'}

print(info.pop('name'))

print(info)
#删除后键值一起删除,pop删除可以获取删除的值
egon
{'age': 18, 'sex': 'male'}

#5、键keys(),值values(),键值对items()
info={'name':'egon','age':18,'sex':'male'}

print(list(info.items())[0])
('name', 'egon')

#6、循环

======================
集合:集合是为了处理两个集合之间的关系,单纯取出单个值无意义. 集合无序的,集合是不能重复的可以充当去重功能.
交集并集合集

用:去重,关系运算,

#定义:
            知识点回顾
            可变类型是不可hash类型
            不可变类型是可hash类型

#定义集合:
            集合:可以包含多个元素,用逗号分割,
            集合的元素遵循三个原则:
             1:每个元素必须是不可变类型(可hash,可作为字典的key)
             2:没有重复的元素
             3:无序

注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
 

#优先掌握的操作:
#1、长度len
#2、成员运算in和not in

#3、|合集
#4、&交集
#5、-差集
#6、^对称差集
#7、==
#8、父集:>,>= 
#9、子集:<,<=    

 

 
 

 

转载于:https://www.cnblogs.com/gaoyuechen/p/8010504.html

相关文章:

  • ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
  • oracle数据库内存调整之增加内存
  • 实战|智能家居行业移动应用性能分析
  • html5--6-23 CSS3中的文字与字体
  • activity theme parent 属性浅析
  • Filter过滤器,Interceptor拦截器,ControllerAdvice,Aspect切片
  • php调用系统命令如何获得输出结果
  • 实现一个websocket服务器-实践篇
  • 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  • ABP理论学习之缓存Caching
  • Linux GPIO控制方法
  • “双十二”:“交互+交易+交付”融合运营为王
  • 直接拿来用,最火的.NET开源项目
  • FAQ宝典之Rancher Server
  • Kali Linux渗透测试实战 2.2 操作系统指纹识别
  • ES6指北【2】—— 箭头函数
  • JavaScript-如何实现克隆(clone)函数
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [笔记] php常见简单功能及函数
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Bootstrap JS插件Alert源码分析
  • CSS魔法堂:Absolute Positioning就这个样
  • Invalidate和postInvalidate的区别
  • java8 Stream Pipelines 浅析
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • node入门
  • vue-router的history模式发布配置
  • 初探 Vue 生命周期和钩子函数
  • 力扣(LeetCode)965
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 面试遇到的一些题
  • 原生js练习题---第五课
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Z2294. 打印树的直径
  • #在 README.md 中生成项目目录结构
  • $forceUpdate()函数
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (BFS)hdoj2377-Bus Pass
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (三)uboot源码分析
  • (循环依赖问题)学习spring的第九天
  • (转)Linq学习笔记
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET Standard 的管理策略
  • .NET 反射 Reflect
  • .Net 知识杂记
  • .NET 中的轻量级线程安全
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .Net中的集合
  • .Net组件程序设计之线程、并发管理(一)