[Python] Python 学习记录(2)
1.range(x,y)
[x,y)
>>> range(0,4) #0,1,2,3
>>> range(1,4) #1,2,3
2.dics
dics.get(key, default=None)
当key在dics中不存在时返回default的值,返回一个函数也是可以的
>>> dics = {
0 : 'a',
1 : 'b',
2 : 'c'
}
>>> dics.get(1, 'not found')
'b'
>>> dics.get(4, 'not found')
'not found'
- 判断key在dic中是否存在
两种方法
__contains__('key')
'key' in d.keys()
>>> d = {'name':'jack', 'sex':1, 'age':33}
>>> d
{'name': 'jack', 'sex': 1, 'age': 33}
>>> d.__contains__('name')
True
>>> 'name' in d.keys()
True
- foreach一个dic
j = {'key1' : 'value1', 'key2' : 'value2'}
for key, value in j.items(): # items()中每一项都是 tuple 类型,这里的key和value不是特定的关键字
print(key)
print(value)
# key1
# value1
# key2
# value2
单独循环key或者values
for k in j.keys():
print(k)
for v in j.values():
print(v)
3.读写文件
python中文件被分为两种,text or binary
- text
读到的字符串经过了编码
每一行都以EOL(End of Line)结尾
\n on Unix
\r\n on Windows
在写入的字符串中加入'\n'会自动换行
- binary
在mode后加上'b'
二进制方式读写文件
基本流程
open
write | read
close
with 相当于 using,自动close()
# mode r w a(append) r+(read and write)
with open('filepath','mode', encoding = 'utf-8') as file:
file.write('aaa')
file.read(size) # 读size个字符或byte
file.readline()
# from_what 0 (default)beginning of the file
# 1 current file position
# 2 end of file
file.seek(offset, from_what)
file.readlines()
写json
import json
with open('filepath', 'w', encoding = 'utf-8') as file:
data = json.dumps(u'data', ensure_ascii = False)
file.write(unicode(data))
python的json库只能序列化python的内置类型,如果是自定义的数据结构无法使用json.dumps序列化
可以使用jsonpickle
import jsonpickle
class Thing(object):
def __init__(self, name):
self.name = name
obj = Thing('Awesome')
jsn = jsonpickle.encode(obj) # 序列化,会带上类型信息用于反序列化
jsonpickle.decode(jsn) # 反序列化
jsn = jsonpickle.encode(obj, unpicklable=False) #序列化,不带类型信息
4. 判断某个class是否存在某个attribute
hasattr(class_a, 'attribute')
5. 判断某个变量是否是list
a = [1, 2, 3]
if isinstance(a, list):
print('a is a list')
6. list.append(),引用传递
在li.append(a)之后对a进行修改,li中的数据也会改变
此时的a与li[0]指向同一块内存
>>> import scrapy
>>>
>>> class A(scrapy.Item):
... post_id = scrapy.Field()
... author_id = scrapy.Field()
>>>
>>> a = A(post_id = "post_id_1", author_id = "author_id_1")
>>> li = []
>>> li.append(a)
>>> print(li)
[{'author_id': 'author_id_1', 'post_id': 'post_id_1'}]
>>> a['post_id'] = 'post_id_2'
>>> print(li)
[{'author_id': 'author_id_1', 'post_id': 'post_id_2'}]
Reference
[Python] Python 学习记录(2)的更多相关文章
- Python爬虫学习记录【内附代码、详细步骤】
引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...
- python爬虫学习记录
爬虫基础 urllib,urllib2,re都是python自带的模块 urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏 ...
- 简明 Python 教程--学习记录
注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...
- python numpy学习记录
numpy是一个python和矩阵相关的库,在机器学习中非常有用,记录下numpy的基本用法 numpy的数组类叫做ndarray也叫做数组,跟python标准库中的array.array不同,后者只 ...
- python多线程学习记录
1.多线程的创建 import threading t = t.theading.Thread(target, args--) t.SetDeamon(True)//设置为守护进程 t.start() ...
- Python tkinter 学习记录(一) --label 与 button
最简的形式 from tkinter import * root = Tk() # 创建一个Tk实例 root.wm_title("标题") # 修改标题 root.mainloo ...
- Python正则表达式学习记录
常用的命令: http://www.runoob.com/python/python-reg-expressions.html 使用中相关注意问题: 1. 中括号里的表示从N到M需要用横线‘-’, 而 ...
- 流畅的python第一章python数据模型学习记录
python中有些特殊的方法,以双上下划线开头,并以双下划线结束的方法.如__getitem__,这些方法是特殊的方法,供python解释权内部使用,一般来说不需要调用 还有一种是以双下划线开头的,如 ...
- python getopt学习记录
有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...
- python基础学习记录......
1.IDEA写python 打开IDEA,File--->settings---->Plugins 输入python 安装 重启IDEA 2.新建Project 选择P ...
随机推荐
- python查找时,不支持compound class
1.python使用如下代码查找页面上的元素时, browser.findElement_by_class_name("widget-content nopadding") 报错: ...
- HDU2485Destroying the bus stations 拆点网络流求割点个数
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...
- codeforces 779 D. String Game(二分)
题目链接:http://codeforces.com/contest/779/problem/D 题意:给你一段操作序列,按顺序依次删掉字符串1中相应位置的字符,问你最多能按顺序删掉多少个字符,使得s ...
- 微信公众号之获取openId
在小伙伴们开发微信公众号.小程序或者是在微信内置浏览器打开的项目时,会遇到的第一个问题就是如何获取openId,今天小编就给大家带来的是如何获取openId. 首先 我们要从微信开发者后台得到ap ...
- Wamp 新增php版本 教程
a.php版本下载:https://windows.php.net/download b.如果是apache环境下请认准 Thread Safe 版本 下载解压zip c.调整文件名为 php7. ...
- Android-打包AAR步骤以及最为关键的注意事项!
### 简介 最近因为项目的要求,需要把开发的模块打包成aar,供其他项目调用,在搞了一段时间后,发现这里还是有很多需要注意的地方,所以记录一下,帮助大家不要走弯路. **首先何为aar包?** ![ ...
- 机器学习Label Encoder和One Hot Encoder
标签编码(Label Encoder) 在本例中第一列是Country, 如果我们要运行任何模型, 数据中不能包含文本 所以要对文本进行处理 接下来,我们从sklearn库中导入LabelEncode ...
- TypeScript模块系统、命名空间、声明合并
命名空间 命名空间能有效避免全局污染.在ES6引入模块之后,命名空间就较少被提及了.如果使用了全局的类库,命名空间仍是一个好的解决方案. namespace Shape{ const pi = Mat ...
- iOS 13 绕过锁屏密码漏洞
iOS 13 很快就要发布了,在未正式发布之前,西班牙的安全研究员 Jose Rodriguez 公开了一个漏洞,能够查绕过锁屏密码查看通讯录.照片.短信. 在 iOS 设备上,当屏幕锁定时,用户无法 ...
- Python文件访问编码格式问题UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position xx: 解决方案
1.Python读取文件 # .打开文件 file = open("ReadMe") # .读取文件类容 text = file.read() print(text) # .关闭文 ...