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

注:这样分割然后用索引对数据操作有时候会比较麻烦,比如某一个数据里面包含一个逗号,有的是被引号括起来的,这些需要自己去去除的。

  1. 当然我们也可以读取其他分隔符的文件:只需要改一行代码就OK:比如制表符分割的文件读取:

with open('wstocks.csv', ‘r’) as f:

f_csv = csv.reader(f, delimiter=’\t’)

  1. 还有一种情况需要注意的是,有时候表头里面可能含有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))

  1. 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 文.