Python-文件格式(处理CSV文件和JSON数据)

本文介绍了Python中处理CSV和JSON数据的方法。在CSV模块中,详细讲解了Reader对象用于从CSV文件读取数据,Writer对象用于写入数据。在JSON部分,探讨了json.dumps用于编码Python对象为JSON字符串,而json.loads则用于解码JSON数据回Python类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.CSV模块

       CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:

  • 值没有类型,所有值都是字符串
  • 不能指定字体颜色等样式
  • 不能指定单元格的宽高,不能合并单元格
  • 没有多个工作表
  • 不能嵌入图像图表

1.1   Reader对象——从CSV文件中读取数据

import csv

filename = 'F:/example
.csv'
with open(filename) as f:
    reader = csv.reader(f)
    print(list(reader))

注意:不能直接将文件名字符串传递给csv.reader()函数。如需访问,将其传递给list()

1.1.1在for循环中遍历

import csv

filename = 'F:/example.csv'
with open(filename) as f:
    reader = csv.reader(f)
    for row in reader:
        # 行号从1开始
        print(reader.line_num, row)

运行结果

1 ['AKST', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']
2 ['2014-1-1', '46', '42', '37', '40', '38', '36', '97', '86', '76', '29.95', '29.77', '29.57', '10', '8', '2', '25', '14', '36', '0.69', '8', 'Rain', '138']

前面的数字是行号,从1开始,可以用reader.line_num获取。

要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next方法一次获取一行。

import csv

filename = 'F:/example.csv'
with open(filename) as f:
    reader = csv.reader(f)
    # 读取一行,下面的reader中已经没有该行了
    head_row = next(reader)
    for row in reader:
        # 行号从2开始
        print(reader.line_num, row)

1.2 Writer对象-写数据到csv文件中

       有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

import csv

# 使用数字和字符串的数字都可以
datas = [['name', 'age'],
         ['Bob', 14],
         ['Tom', 23],
        ['Jerry', '18']]

with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for row in datas:
        writer.writerow(row)
        
    # 还可以写入多行
    writer.writerows(datas)

如果不指定newline='',则每写入一行将有一空行被写入。上面的代码生成如下内容。

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18

1.2.1  delimiter 和 lineterminator关键字参数

      使用制表符代替逗号来分隔单元格。

import csv

# 使用数字和字符串的数字都可以
datas = [['name', 'age'],
         ['Bob', 14],
         ['Tom', 23],
        ['Jerry', '18']]

with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f,delimiter='\t',lineterminator='\n\n')
    for row in datas:
        writer.writerow(row)
  
name age

Bob 14

Tom 23

Jerry 18

2.JSON 函数

     JSON在python中分别由list和dict组成。

使用 JSON 函数需要导入 json 库:import json

         函数                        描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象

2.1 json.dumps

        json.dumps 用于将 Python 对象编码成 JSON 字符串。

语法

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", 
default=None, sort_keys=False, **kw)

实例

以下实例将数组编码为 JSON 格式数据:

import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = json.dumps(data)
print json


以上代码执行结果为:

    [{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

使用参数让 JSON 数据格式化输出:

>>> import json
>>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
{
    "a": "Runoob",
    "b": 7
}

2.3 json.loads

         json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

实例

以下实例展示了Python 如何解码 JSON 对象:

<pre>
import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = json.loads(jsonData)
print text
</pre>

 

以上代码执行结果为:

             {u'a': 1,u'c' : 3, u'b': 2, u'e': 5, u'd': 4}

python 原始类型向 json 类型的转化对照表:

Python JSON
dictobject
list,tuple

array 

str, unicode string
int, long, float number
Truetrue
False    false
None    null

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值