json.dumps()和json.loads()

json.dumps()和json.loads()

一、概念理解

1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

2、json.dump()和json.load()主要用来读写json文件函数

二、测试

import json

# json.dumps()函数的使用,将字典转化为字符串
dict1 = {“age”: “12”}
json_info = json.dumps(dict1)
print(“dict1的类型:”+str(type(dict1)))
print(“通过json.dumps()函数处理:”)
print(“json_info的类型:”+str(type(json_info)))

1 import json
2
3 # json.loads函数的使用,将字符串转化为字典
4 json_info = ‘{“age”: “12”}’
5 dict1 = json.loads(json_info)
6 print(“json_info的类型:”+str(type(json_info)))
7 print(“通过json.dumps()函数处理:”)
8 print(“dict1的类型:”+str(type(dict1)))

1 import json
2
3 # json.dump()函数的使用,将json信息写进文件
4 json_info = “{‘age’: ’12’}”
5 file = open(‘1.json’,’w’,encoding=’utf-8′)
6 json.dump(json_info,file)

1 import json
2
3 # json.load()函数的使用,将读取json信息
4 file = open(‘1.json’,’r’,encoding=’utf-8′)
5 info = json.load(file)
6 print(info)

基础数据类型及作业

Python核心基础|第三讲 基础数据类型及作业

一 、课堂内容
基本数据类型

• 数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值

整数和小数

• 整数 : 所有整数 例如 : a = 1 b = 100 c =999 都是int类型
• 小数常量 : 所有小数 例如 a =1.2 b=6.66 用float类型表示

布尔值和空值

• 布尔: 只有2个值一个是True 一个是False
• None常量:只有一个数值就是None 也就是空值

字符串

什么是字符串
• 字符串是由数字、字母、下划线组成的一串字符 • 注意 • 单引号或双引号不能混合使用
• Python中用一对双引号或者一对单引号包裹的内容就是字符串

转义字符

转义字符是一种特殊的字符常量。转义字符以反斜线””开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符
总结
• \t 表示制表符
• \n 表示换行符
• \ 表示反斜杠
• \’ 表示 ’
• \ ‘’ 表示 ‘’

长字符串

• 长字符串 又叫做文档字符串 我们使用三重引号来表示一个长字符串’’’ ‘’’
• 三重引号可以换行,并且会保留字符串中的格式

格式化字符串

• *种格式化字符串 拼串
• 第二种格式化字符串 参数传递
• 第三种格式化字符串 占位符
• %s 字符串占位
• %f 浮点数占位
• %d 整数占位
• 第四种格式化字符串 f’{变量}str.format ()

字符串的其他操作

• len() 字符串的长度
• max() *大值
• min() *小值
• split()分割字符串
• join()拼接字符串
•find()查找字符串
• replace() 替换字符串
• partition() 把字符串分割为三部分

去空格

• s.strip() 左右两边去空格
• s.lstrip() 去左边空格
• s.rstrip() 去右边空格

字符串大小写

• s.upper() 全部大写
• s.lower() 全部小写
• s.isupper() 判断是不是大写
• s.islower() 判断是不是小写

二、课堂代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# File : day03.py
# Author : zhenbei
# Date : 2020-09-15 19:58

i = 4
if i < 5:
a = input(‘请输入:’)
print(a)
print(‘hello world’)

print(‘hello world!’, ‘,’)
print()

print(max(1, 2, 3, 4))

print = 123
print(print)
print(123456789)
# print(123_456_789)
a = 123456782154165120451202210
b = 123456782154165120451202210
print(‘我是超人’, end=’\n’)
print(‘我是超人’, end=’\n’)

“””
关关雎鸠,
在河之洲,
窈窕淑女,
君子好逑

“””
拼串
s = ‘hello’
print(‘s = ‘ + s)
参数的传递
s = ‘hello’
print(‘s = ‘, s)
占位符 %s
s = ‘i love %s’
str1 = ‘%s’%’刘亦菲’
print(str1)

a = ‘刘亦菲’
b = ‘关之琳’
s = ‘s = %s, s2 = %s’ % (a, b)
print(s)

s = ‘我爱你,{},{}’
s = s.format(a, b)
print(s)

字符串的长度 len()

print(len(a))
a.__len__()

max(), min()
ascii表
print(max(a))
print(min(a))

split()
按照条件分割,返回出一个列表
print(a.split(‘ ‘))

join()
print(‘-‘.join(a))

find() 返回的是一个index值,也就是索引值, 也就是字符串中的位置
print(a.find(‘my’))
# index()
print(a.index(‘my’))

replace() 替换字符串
print(a.replace(‘python’, ‘刘亦菲’))

partition()返回的是一个元组,里面的数据是分成三部分
print(a.partition(‘love’))

print(a.rstrip())

三、课堂作业
a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
#方法一
a,b=6,8
print(a, b)
a,b=8,6
print(a, b)

#方法二
a,b=6,8
print(a, b)
a,b=b,a
print(a, b)

2.完成字符串的逆序以及统计

设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
打印出字符串长度
使用切片逆序打印出字符串
while True:
a=input(‘请输入长度低于31的字符串:’)
if len(a)>31:
print(‘字符串长度大于31,请重新输入’)
else:
print(len(a))
print(a[::-1])
break

3.要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入

用户名长度6-20,用户名必须以字母开头
密码长度至少6位,不能为纯数字,不能有空格
def name_check(name, key):
if len(name) < 6 or len(name) > 20:
print(“格式错误,6-20”)
print(“请重新输入”)
return

if name[0] not in “qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM”:
print(name[0])
print(“用户名开头必须是字母”)
print(“请重新输入”)
return

if len(key) < 6 or key.isdigit() or ” ” in key:
print(“密码长度至少6位,不能为纯数字,不能有空格”)
print(“请重新输入”)
return

print(“符合规则”)

def main():
while True:
name = input(“请输入用户名(长度6-20)”)
if name == “QUIT”:
break
key= input(“请输入密码(密码长度至少6位)”)
name_check(name, key)

main()

Python源码|GCJ02转WGS84坐标

Python源码|GCJ02转WGS84坐标

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# File : gcj_wgs84.py
# Author : zhenbei
# Date : 2020-08-15 13:22

import json
import urllib
import math
import pandas as pd

x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626 # π
a = 6378245.0 # 长半轴
ee = 0.00669342162296594323 # 偏心率平方

class Geocoding:
def __init__(self, api_key):
self.api_key = api_key

def geocode(self, address):
“””
利用高德geocoding服务解析地址获取位置坐标
:param address:需要解析的地址
:return:
“””
geocoding = {‘s’: ‘rsv3’,
‘key’: self.api_key,
‘city’: ‘全国’,
‘address’: address}
geocoding = urllib.urlencode(geocoding)
ret = urllib.urlopen(“%s?%s” % (“http://restapi.amap.com/v3/geocode/geo”, geocoding))

if ret.getcode() == 200:
res = ret.read()
json_obj = json.loads(res)
if json_obj[‘status’] == ‘1’ and int(json_obj[‘count’]) >= 1:
geocodes = json_obj[‘geocodes’][0]
lng = float(geocodes.get(‘location’).split(‘,’)[0])
lat = float(geocodes.get(‘location’).split(‘,’)[1])
return [lng, lat]
else:
return None
else:
return None

def gcj02_to_wgs84(lng, lat):
“””
GCJ02(火星坐标系)转GPS84
:param lng:火星坐标系的经度
:param lat:火星坐标系纬度
:return:
“””
if out_of_china(lng, lat):
return [lng, lat]
dlat = _transformlat(lng – 105.0, lat – 35.0)
dlng = _transformlng(lng – 105.0, lat – 35.0)
radlat = lat / 180.0 * pi
magic = math.sin(radlat)
magic = 1 – ee * magic * magic
sqrtmagic = math.sqrt(magic)
dlat = (dlat * 180.0) / ((a * (1 – ee)) / (magic * sqrtmagic) * pi)
dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)
mglat = lat + dlat
mglng = lng + dlng
return [lng * 2 – mglng, lat * 2 – mglat]

def _transformlat(lng, lat):
ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + \
0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng))
ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
math.sin(2.0 * lng * pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(lat * pi) + 40.0 *
math.sin(lat / 3.0 * pi)) * 2.0 / 3.0
ret += (160.0 * math.sin(lat / 12.0 * pi) + 320 *
math.sin(lat * pi / 30.0)) * 2.0 / 3.0
return ret

def _transformlng(lng, lat):
ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + \
0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng))
ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
math.sin(2.0 * lng * pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(lng * pi) + 40.0 *
math.sin(lng / 3.0 * pi)) * 2.0 / 3.0
ret += (150.0 * math.sin(lng / 12.0 * pi) + 300.0 *
math.sin(lng / 30.0 * pi)) * 2.0 / 3.0
return ret

def out_of_china(lng, lat):
“””
判断是否在国内,不在国内不做偏移
:param lng:
:param lat:
:return:
“””
return not (lng > 73.66 and lng < 135.05 and lat > 3.86 and lat < 53.55)

if __name__ == ‘__main__’:
dat=pd.read_csv(‘150908out.csv’,encoding=’gbk’)
lock_list=dat[‘location’].tolist()
wgs84=[]
print(lock_list)
for i in lock_list:
print(i, type(i))
lng = i.split(‘,’)[0]
lat = i.split(‘,’)[1]
result4 = gcj02_to_wgs84(float(lng),float(lat) )
wgs84.append(result4)
dat[‘wgs84’]=wgs84
res=pd.DataFrame(dat[‘wgs84’])
res.to_csv(‘parkplot2.csv’,encoding=’gbk’)

python源码|dingniu

python源码|dingniu

import requests
import openpyxl
# 创建工作薄
wb=openpyxl.Workbook()
# 获取工作薄的活动表
sheet=wb.active
# 工作表重命名
sheet.title=’顶牛’
sheet.append([‘序号’,’股票代码’,’*新价’,’涨幅’,’换手率’,’量比’,’DDX’,’DDY’,’DDZ’,’5日’,’10日’,’连续’,’连增’,’成交量(万元)’,’BBD(万元)’,’单数比’,’买入’,’卖出’,’特大差’,’大单差’,’中单差’,’小单差’,’买入’,’卖出’,’买入’,’卖出’,’买入’,’卖出’,’通吃率1日’,’通吃率5日’,’通吃率10日’,’通吃率20日’,’主动率1日’,’主动率5日’,’主动率10日’,’流通盘(万股)’])

 

python 时间戳计算

python 时间戳计算

根据当前时间戳获得整小时时间戳
unit = 3600
start_time = int(time.time())/3600 * 3600
根据当前时间戳获得整天时间戳
unit = 3600*24
start_time = int(time.time()) / unit * unit – 8 * 3600由于时间戳起始为1970 年 1 月 1 日(08:00:00)所以这里需要减8小时才时0点的时间戳
———————
复制代码
import time
import datetime

t = time.time()

print (t) #原始时间数据
print (int(t)) #秒级时间戳
print (int(round(t * 1000))) #毫秒级时间戳

nowTime = lambda:int(round(t * 1000))
print (nowTime()); #毫秒级时间戳,基于lambda

print (datetime.datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)) #日期格式化

返回
1499825149.26
1499825149
1499825149257
1499825149257
2017-07-12 10:05:49

2、将日期转为秒级时间戳
dt = ‘2018-01-01 10:40:30’
ts = int(time.mktime(time.strptime(dt, “%Y-%m-%d %H:%M:%S”)))
print (ts)
返回
1514774430

3、将秒级时间戳转为日期
ts = 1515774430
dt = time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(ts))
print(dt)
返回
2018-01-13 00:27:10
复制代码
1.获取当前时间的两种方法:

复制代码
代码如下:

import datetime,time
now = time.strftime(“%Y-%m-%d %H:%M:%S”)
print now
now = datetime.datetime.now()
print now

2.获取上个月*后一天的日期(本月的*天减去1天)

复制代码
代码如下:

last = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
print last

3.获取时间差(时间差单位为秒,常用于计算程序运行的时间)

复制代码
代码如下:

starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime – starttime).seconds

4.计算当前时间向后10个小时的时间

复制代码
代码如下:

d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如 datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数 (seconds)等。

5.python中时间日期格式化符号:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
复制代码
复制代码

In [27]: from datetime import datetime

In [28]: a=datetime.now()

In [29]: b=datetime.now()

In [32]: a
Out[32]: datetime.datetime(2015, 4, 7, 4, 30, 3, 628556)

In [33]: b
Out[33]: datetime.datetime(2015, 4, 7, 4, 34, 41, 907292)

In [34]: str(a) 字符串的转换,用户储存到文本或者数据库
Out[34]: ‘2015-04-07 04:30:03.628556’

In [35]:datetime.strptime(str(a),”%Y-%m-%d %H:%M:%S.%f”)
Out[35]:datetime.datetime(2015, 4, 7, 4, 30, 3, 628556)

In [36]: (b-a)
Out[36]: datetime.timedelta(0, 278, 278736)

In [37]: (b-a).seconds 时间差的计算,单位为秒
Out[37]: 278
Q:如何方便的计算两个时间的差,如两个时间相差几天,几小时等
A:使用datetime模块可以很方便的解决这个问题,举例如下:
?

>>> import datetime
>>> d1 = datetime.datetime(2005, 2, 16)
>>> d2 = datetime.datetime(2004, 12, 31)
>>> (d1 – d2).days
47
上例演示了计算两个日期相差天数的计算。
?

import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime – starttime).seconds
上例演示了计算运行时间的例子,以秒进行显示。
?

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()
上例演示了计算当前时间向后10小时的时间。
其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数(seconds)等。
以上所述就是本文的全部内容了,希望大家能够喜欢。