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'

二进制方式读写文件

基本流程

  1. open

  2. write | read

  3. 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

  1. jsonpickle Documentation

[Python] Python 学习记录(2)的更多相关文章

  1. Python爬虫学习记录【内附代码、详细步骤】

    引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...

  2. python爬虫学习记录

    爬虫基础 urllib,urllib2,re都是python自带的模块 urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏 ...

  3. 简明 Python 教程--学习记录

    注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...

  4. python numpy学习记录

    numpy是一个python和矩阵相关的库,在机器学习中非常有用,记录下numpy的基本用法 numpy的数组类叫做ndarray也叫做数组,跟python标准库中的array.array不同,后者只 ...

  5. python多线程学习记录

    1.多线程的创建 import threading t = t.theading.Thread(target, args--) t.SetDeamon(True)//设置为守护进程 t.start() ...

  6. Python tkinter 学习记录(一) --label 与 button

    最简的形式 from tkinter import * root = Tk() # 创建一个Tk实例 root.wm_title("标题") # 修改标题 root.mainloo ...

  7. Python正则表达式学习记录

    常用的命令: http://www.runoob.com/python/python-reg-expressions.html 使用中相关注意问题: 1. 中括号里的表示从N到M需要用横线‘-’, 而 ...

  8. 流畅的python第一章python数据模型学习记录

    python中有些特殊的方法,以双上下划线开头,并以双下划线结束的方法.如__getitem__,这些方法是特殊的方法,供python解释权内部使用,一般来说不需要调用 还有一种是以双下划线开头的,如 ...

  9. python getopt学习记录

    有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...

  10. python基础学习记录......

    1.IDEA写python 打开IDEA,File--->settings---->Plugins    输入python  安装   重启IDEA 2.新建Project     选择P ...

随机推荐

  1. python查找时,不支持compound class

    1.python使用如下代码查找页面上的元素时, browser.findElement_by_class_name("widget-content nopadding") 报错: ...

  2. HDU2485Destroying the bus stations 拆点网络流求割点个数

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...

  3. codeforces 779 D. String Game(二分)

    题目链接:http://codeforces.com/contest/779/problem/D 题意:给你一段操作序列,按顺序依次删掉字符串1中相应位置的字符,问你最多能按顺序删掉多少个字符,使得s ...

  4. 微信公众号之获取openId

    在小伙伴们开发微信公众号.小程序或者是在微信内置浏览器打开的项目时,会遇到的第一个问题就是如何获取openId,今天小编就给大家带来的是如何获取openId. 首先   我们要从微信开发者后台得到ap ...

  5. Wamp 新增php版本 教程

    a.php版本下载:https://windows.php.net/download b.如果是apache环境下请认准  Thread Safe  版本 下载解压zip c.调整文件名为 php7. ...

  6. Android-打包AAR步骤以及最为关键的注意事项!

    ### 简介 最近因为项目的要求,需要把开发的模块打包成aar,供其他项目调用,在搞了一段时间后,发现这里还是有很多需要注意的地方,所以记录一下,帮助大家不要走弯路. **首先何为aar包?** ![ ...

  7. 机器学习Label Encoder和One Hot Encoder

    标签编码(Label Encoder) 在本例中第一列是Country, 如果我们要运行任何模型, 数据中不能包含文本 所以要对文本进行处理 接下来,我们从sklearn库中导入LabelEncode ...

  8. TypeScript模块系统、命名空间、声明合并

    命名空间 命名空间能有效避免全局污染.在ES6引入模块之后,命名空间就较少被提及了.如果使用了全局的类库,命名空间仍是一个好的解决方案. namespace Shape{ const pi = Mat ...

  9. iOS 13 绕过锁屏密码漏洞

    iOS 13 很快就要发布了,在未正式发布之前,西班牙的安全研究员 Jose Rodriguez 公开了一个漏洞,能够查绕过锁屏密码查看通讯录.照片.短信. 在 iOS 设备上,当屏幕锁定时,用户无法 ...

  10. Python文件访问编码格式问题UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position xx: 解决方案

    1.Python读取文件 # .打开文件 file = open("ReadMe") # .读取文件类容 text = file.read() print(text) # .关闭文 ...