print(row)# type:list
读取出第一行为headers,剩下一行一行读取为一个个list。可以用切片来进行选择自己想要的数据。但是:使用元组切片时候很可能混乱,下面提供了另一种可能的方案。
3命名元组
from collections import namedtuple
with open('stocks.csv') as f:
f_csv = csv.reader(f)
headings = next(f_csv)
Row = namedtuple('Row', headings)
for r in f_csv:
row = Row(*r)
print(row.Symbol, row)# 可直接通过row.Date等获取相应的元素。
4将数据读取为字典列表
with open('stocks.csv') as f:
f_csv = csv.DictReader(f)
for row in f_csv:
print(row['Symbol'], row)
注:第一列需要时表头,这样可以像字典一样通过表头关键字获取对应行的元素。
5写入CSV文件
数据格式1:
headers = ['Symbol', 'Price', 'Date', 'Time', 'Change', 'Volume']
rows = [('AA', 39.12, '2017/07/07', '9:36am', -0.18, 181800),
('AB', 49.12, '2017/07/07', '9:36am', -0.48, 281800),
('AC', 319.12, '2017/07/07', '9:36am', -0.28, 481800)]
with open('wstocks.csv', 'w') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)# 写入一行
f_csv.writerows(rows)# 一次性写入多行
数据格式2:
headers = ['Symbol', 'Price', 'Date', 'Time', 'Change', 'Volume']
rows = [{'Symbol':'AA', 'Price':39.12, 'Date':'2017/07/07',
'Time':'9:36am', 'Change':-0.18, 'Volume':181800},
{'Symbol':'AB', 'Price':49.12, 'Date':'2017/07/07',
'Time':'9:36am', 'Change':-0.48, 'Volume':281800},
{'Symbol':'AC', 'Price':319.12, 'Date':'2017/07/07',
'Time':'9:36am', 'Change':-0.28, 'Volume':481800}]
with open('wstocks.csv', 'w') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()# 写入头
f_csv.writerows(rows)# 一次性写入多行
注:写文件有个缺陷就是结尾有换行符。只需要在打开文件的时候加上一个参数就OK了:with open('wstocks.csv', 'w',
newline=''
) as f。
6.我们的读取代码
1. 很多时候我们根据实际需要大概这样读取CSV文件:
import re
with open('wstocks.csv', 'r') as f:
header = False # 是否打印headerTrue—打印
while True:
line = f.readline()
if header:
header = False
continue
if line:
line = re.sub('[\r\n]','',line)
lines = line.split(',')
print(lines)
else:
break
注:这样分割然后用索引对数据操作有时候会比较麻烦,比如某一个数据里面包含一个逗号,有的是被引号括起来的,这些需要自己去去除的。
-
当然我们也可以读取其他分隔符的文件:只需要改一行代码就OK:比如制表符分割的文件读取:
with open('wstocks.csv', ‘r’) as f:
f_csv = csv.reader(f, delimiter=’\t’)
-
还有一种情况需要注意的是,有时候表头里面可能含有Python里面的非法标志符,这时候就需要用正则表达式把非法标志符过滤掉。
import re
from collections import namedtuple
with open('geo.csv') as f:
f_csv = csv.reader(f)
headers = [re.sub('[^a-zA-Z_]', '_', h) for h in next(f_csv)]
Row = namedtuple('Row', headers)
print(headers)
for r in f_csv:
print(Row(*r))
-
CSV模块不会尝试去解释数据或者将数据转换为出字符串之外的类型,这时候就需要我们手动操作了。
看代码1:
col_types = [str, float, str, str, float, int]
with open('stocks.csv') as f:
f_csv = csv.reader(f)
headers = next(f_csv)
for row in f_csv:
print(row)# 转换前
row = [convert(value) for convert, value in zip(col_types, row)]
print(row) # 转换后
看代码2:
print("Reading as dicts with type conversion")
field_types = [('Price', float),
('Change', float),
('Volume', int)]
with open('stocks.csv') as f:
for row in csv.DictReader(f):
print(row) # 转换前
row.update((key, conversion(row[key])) for key, conversion in field_types)
print(row) # 转换后
2读写JSON数据
1将数据结构转换为json
import json
data = {
'name':'ACME',
'shares':100,
'price':542.23}
json_str = json.dumps(data) # <class 'str'>
print(json_str)
2把json编码的字符串转换为对应的数据结构
data = json.loads(json_str) # <class 'dict'>
print(type(data), data)
3Json-Python相互转化对照表
Python-----------àJson
|
Json -----------àJson
|
dict
|
object
|
object
|
dict
|
list, tuple
|
array
|
array
|
list
|
str, unicode
|
string
|
string
|
unicode
|
int, long, float
|
number
|
number (int)
|
int, long
|
True
|
true
|
number (real)
|
float
|
False
|
false
|
true
|
True
|
None
|
null
|
false
|
False
|
看几个例子吧:
4Json读写Json文件
1.写文件
data = {
'name':'ACME',
'shares':100,
'price':542.23}
with open('./inputdata/data.json', 'w') as f:
json.dump(data, f)
2.读文件
with open('./inputdata/data.json', 'r') as f:
data = json.load(f)
print(data, type(data))
5通过读取json创建其他类型的对象
1.数据解码为有序字典保持数据的有序性。
from collections import OrderedDict
s = '{"name": "ACME", "shares": 100, "price": 542.23}'
data = json.loads(s, object_pairs_hook=OrderedDict) # 数据解码为有序字典
print(data)
2.将Json字典转换为Python对象。
class JSONobject(object):
def __init__(self, d):
self.__dict__ = d
s = '{"name": "ACME", "shares": 100, "price": 542.23}'
data = json.loads(s, object_hook=JSONobject)
print(data.name, data.shares, data.price)
注
:类实例一般是无法序列化为Json对象,但是如果想序列化类实例,可以提供一个函数将类实例作为输入并返回一个可以被序列化处理的字典。
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def serialize_instance(obj):
d = {'__classname__':type(obj).__name__}
d.update(vars(obj))
return d
# 如果想取回一个实例,如下:
classes = {'Point':Point}
def unserialize_object(d):
clsname = d.pop('__classname__', None)
if clsname:
cls = classes[clsname]
obj = cls.__new__(cls)
for k, v in d.items():
setattr(obj, k, v)
return obj
else:
return d
P = Point(2, 3)
s = json.dumps(P, default=serialize_instance)
print(s)
a = json.loads(s, object_hook=unserialize_object)
print(a)
print(a.x)
3输出美化
data = {
'name':'ACME',
'shares':100,
'price':542.23}
注:更详细的内容请参阅文档:https://docs.python.org/3/library/json.html
接口测试就是
数据
的测试,在测试之前,需要准备好测试
数据
,而测试
数据
可以用
数据
库、excel、txt和
csv
方式,当然还有一种方式,那就是使用
json
文件
来储存测试
数据
。常用的方式就是这些。
python
读取
json
文件
和
读取
txt方式是一样的,获取路径,判断路径是否存在,获取
文件
名及绝对路径,打开
读取
数据
,提取关键
数据
,关闭
文件
。具体流程,画了一个草图方便理解:
具体代码实现
@author: Leo
@software: pycharm
@file: operate_
json
.py
@time: 2020/5/3 0003 9:01
@Desc:
4,Dave,15,95
假设上述
csv
文件
保存为"A.
csv
",如何用
Python
像操作Excel一样提取其
中
的一列,即一个字段,利用
Python
自带的
csv
模块,有两种方法可以实现:
第一种方法使用reader函数,接收一个可迭代的对象(
在
Python
中
,将
数据
类型
编码为
JSON
格式
时,
Python
的内置
类型
会与
JSON
类型
之间有一个自然的映射关系。需要注意的是,一些
Python
对象
类型
(如自定义类、集合、日期等)在默认情况下并不能直接转换为
JSON
类型
。模块提供了将
JSON
格式
的
数据
转换为
Python
对象(如列表、字典等)以及将
Python
对象转换为
JSON
格式
的
数据
的方法。对于日期对象,你可以使用。属性被转换为ISO 8601
格式
的字符串,这是一个
JSON
兼容的日期
格式
。如果你想将
Python
对象转换为
JSON
格式
的字符串,可以使用。
提示:以下是本篇文章正文内容,本文仅为作者作为学习笔记使用,大佬勿喷
一、pandas与numpy?
pandas是一个强大的分析结构化
数据
的工具集;它的使用基础是Numpy(提供高性能的矩阵运算;用于
数据
挖掘
在
Python
中
我们经常会用到两个库Numpy和pandas
csv
文件
转化为数组import numpymy_matrix = numpy.loadtxt(open("c:\1.
csv
","rb"),delimiter=",",skiprows=0) //
CSV
文件
转化为数组将数组或者矩阵存储为
csv
文件
可以使用如下代码实现:numpy....
CSV
是一种以逗号分隔数值的
文件
类型
,在
数据
库或电子表格
中
,常见的导入导出
文件
格式
就是
CSV
格式
,
CSV
格式
存储
数据
通常以纯文本的方式存数
数据
表。
2.代码与讲解分析
(1)数组与np.array
(2)计算形式
(3)关于多维
切片
(4).fit源码分析
#coding=utf-8
# @Author: lihao
# @Time: 2019-09-09 10:11
# @Abst...
二、使用
csv
库
举个例子:先利用codecs.open方法
读取
文件
audito_whole.
csv
,采用utf-8字符编码,再利用
csv
.DictReader()方法
读取
。这里可以换成
python
内置的open()方法,也
csv
文件
是一种以逗号分隔
数据
的
文件
类型
,常用于存储纯文本
类型
的
数据
,在
数据
库和电子表格内它是非常常见的一种导入导出
格式
。那么如何在
python
中
读取
csv
文件
呢?下面文章会有
python
读取
csv
文件
的相关方法介绍。
文章目录
CSV
的介绍阅读和编写
CSV
1、不使用
csv
模块
CSV
的介绍
CSV
是逗号分割值(comma-separated-values)的缩写,是存储
数据
的常用
格式
。大多数时候,人们使用
数据
库
读取
数据
,偶尔用到表格,但
csv
仍占一席之地。它们简单又方便,使用它们不需要额外驱动或 API。在
python
中
的
csv
模块使其变得更简单。
CSV
是一个包含
数据
的文本
文件
,通常
文件
第...
1.
CSV
格式
csv
文件
格式
的本质是一种以文本存储的表格
数据
(使用 Excel 工具即可读写
csv
文件
)。
csv
文件
的每行代表一行
数据
,每行
数据
中
每个单元格内的
数据
以逗号隔开。
Python
提供了
csv
模块来读写
csv
文件
。由于
csv
文件
的
格式
本身比较简单(通常第一行是表头,用于说明每列
数据
的含义,接下来每行代表一行
数据
),因此使用
csv
模块
读取
csv
文件
也非常简单:
创建
csv
模块的
读取
器。
循环调用
csv
读取
器的 next() 方法逐行
读取
csv
文.