python读写csv和json数据

python读写csv数据

在Python中,读写CSV(Comma Separated Values)数据通常使用内置的csv模块。以下是一个简单的例子,展示了如何使用csv模块来读取和写入CSV文件。 首先,假设我们有一个名为example.csv的文件,内容如下:

name,age,city
Alice,28,New York
Bob,22,Los Angeles
Charlie,30,Chicago

读取CSV文件

import csv  # 打开CSV文件并读取内容  
with open('example.csv', mode='r', newline='') as file:  reader = csv.reader(file)  # 遍历CSV文件的每一行  for row in reader:  print(row)  # 打印每一行的内容,作为列表  # 输出:  
# ['name', 'age', 'city']  
# ['Alice', '28', 'New York']  
# ['Bob', '22', 'Los Angeles']  
# ['Charlie', '30', 'Chicago']

写csv文件

import csv  # 定义要写入的数据  
data = [  ['name', 'age', 'city'],  ['Alice', '28', 'New York'],  ['Bob', '22', 'Los Angeles'],  ['Charlie', '30', 'Chicago']  
]  # 打开(或创建)一个CSV文件并写入数据  
with open('output.csv', mode='w', newline='') as file:  writer = csv.writer(file)  # 写入CSV文件的每一行  for row in data:  writer.writerow(row)  # 现在,'output.csv' 文件包含了和上面例子中一样的数据

在上面的例子中,csv.reader用于读取CSV文件,而csv.writer用于将数据写入CSV文件。open函数用于打开文件,并指定模式('r'用于读取,'w'用于写入)。newline=''参数在写入时非常有用,它确保了在不同的操作系统上都能正确地写入行。

csv.reader返回的是一个迭代器,它会产生CSV文件的每一行,每一行都是一个字符串列表。而csv.writer的writerow方法则用于将一个列表作为一行写入CSV文件。

记住,CSV文件只是一个简单的文本文件,其中的数据由逗号分隔。你可以使用任何文本编辑器来查看或编辑它。同时,csv模块也支持其他分隔符,如制表符,你可以通过传递delimiter参数来指定。

 

Python中读写JSON数据

JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,易于阅读和编写。虽然它最初是为JavaScript设计的,但由于其简单性和普遍性,它已经被许多其他编程语言广泛采用,包括Python。在Python中,json模块使得处理JSON数据变得非常简单。

JSON数据结构

JSON主要支持两种数据结构,对象和数组,在python中对应字典和列表,比如:

对象、字典(dict)一种无序的键值对集合使用大括号,格式如下:

    {  "name": "Zhangsan",  

        "age": 30,  

        "city": "New York"  }

数组、列表:这是一个有序的值列表,使用方括号[]表示:

[ "apple",  

  "banana",  

  "cherry"  ]

编解码

编码:Python对象到JSON

使用json.dumps()函数,可以将Python对象(如字典或列表)转换为JSON格式的字符串。

解码:JSON到Python对象

使用json.loads()函数,可以将JSON格式的字符串转换为Python对象(如字典或列表)

python处理json举例

import json
json_string = '{"name": "Zhangsan", "age": 30, "city": "Jining"}'  # 使用json.loads()函数来解析这个json字符串  
json_data = json.loads(json_string)  
# 使用json.dumps()函数来将pyhton对象转回json字符串  
json_data_string = json.dumps(json_data)# 观察每一步的数据类型,可以发现对json_string先解析再dump,最终得到的字符串跟原字符串相等。
print("json编码的原字符串:", type(json_string), json_string)
print("json解析后:", type(json_data), json_data)
print("json转换回原字符串:", type(json_data_string), json_data_string)
print("json解析再转回原json字符串:", json_string == json_data_string)

json文件读取


json模块还可以直接从文件读取JSON数据或将JSON数据写入文件。

# 写到文件
with open('data.json', 'w') as f:json.dump(json_data, f)# 打开并读取JSON文件  
with open('data.json', 'r') as f:  readjsondata = json.load(f)  # 现在,`readjsondata`变量包含了JSON文件中的数据,可以像操作Python字典一样操作它  
print(type(readjsondata), readjsondata)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法训练营day34(补), 动态规划2

//62. 不同路径 func uniquePaths(m int, n int) int { dp : make([][]int, m) // 行赋初始值为1 for i : range dp { dp[i] make([]int, n) dp[i][0] 1 } // 列赋初始值为1 for j : 0; j < n; j { dp[0][j] 1 } for i : 1; i < m; i { for j : 1; j < n; j { dp[…

【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog 前言 在以前的Databricks中&#xff0c;主要由Workspace和集群、SQL Warehouse组成&#xff0c; 这两年Databricks公…

我们在SqlSugar开发框架中,用到的一些设计模式

我们在《SqlSugar开发框架》中&#xff0c;有时候都会根据一些需要引入一些设计模式&#xff0c;主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用&#xff0c;我们的目的是解决问题&#xff0c;并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模…

【YOLOX-nano】YOLOX-nano的推理实践

目录 1 pt文件和pth文件的区别 2 安装依赖库 3 模型下载 4 实践 YOLOX-nano.pth模型转换为YOLOX-nano.onnx模型</

【selenium】WebElement、WebDriver、三种等待方式

目录 一、WebElement 1、click()——触发当前元素的点击事件 2、clear()——清空内容 3、sendKeys(...) 4、按键操作&#xff0c;回车 解决button不好定位和点击的情况&#xff0c;用回车去解决 5、getTagName()——获取元素的的标签名 6、getAttribute(当前标签具有的属…

SpringBoot对于SpringMVC的支持

创建项目 版本说明这里使用的 SpringBoot 2.0.0.Release SpringBoot对于SpringMVC的支持 在之前的开发中很多场景下使用的是基于xml配置文件或者是Java配置类的方式来进行SpringMVC的配置。一般来讲&#xff0c;初始的步骤如下所示 1、初始化SpringMVC的DispatcherServlet2、…

设计模式-工厂方法模式(C++)

工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但将实际的对象创建过程延迟到子类中。这种模式解耦了具体产品的创建过程&#xff0c;使得系统更加灵活和可扩展。 下面是一个使用 C…

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …

Jmeter基础(2) 目录介绍

目录 Jmeter目录介绍bin目录docsextrasliblicensesprintable_docs Jmeter目录介绍 在学习Jmeter之前&#xff0c;需要先对工具的目录有些了解&#xff0c;也会方便后续的学习 bin目录 examplesCSV目录中有CSV样例jmeter.batwindow 启动文件jmeter.shMac/linux的启动文件jmete…

代码随想录 | 216.组合总和III● 17.电话号码的字母组合

216.组合总和III 思路&#xff1a; 和77. 组合思路一致&#xff0c;只不过多了一个cursum用来记录总和。 代码&#xff1a; class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:path []result []def backtracking( k, n, start, cursum):i…

web安全学习笔记【15】——信息打点(5)

信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…

基于springboot财务管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第一篇&#xff0c;带你初步了解C语言&#xff0c;为之后的学习打下基础 文章目录 1️⃣发展历史2️⃣语言特点3️⃣语…

论文精读--GPT2

被BERT敲打了&#xff0c;但是仍然坚持解码器架构 Abstract Natural language processing tasks, such as question answering, machine translation, reading comprehension, and summarization, are typically approached with supervised learning on taskspecific dataset…

使用代理IP技术实现爬虫同步获取和保存

概述 在网络爬虫中&#xff0c;使用代理IP技术可以有效地提高爬取数据的效率和稳定性。本文将介绍如何在爬虫中同步获取和保存数据&#xff0c;并结合代理IP技术&#xff0c;以提高爬取效率。 正文 代理IP技术是一种常用的网络爬虫技术&#xff0c;通过代理服务器转发请求&a…

idea和jdk之间对应的版本(idea支持的jdk版本)

idea如果和jdk版本不对应&#xff0c;就会出现无法运行的情况&#xff0c;如下&#xff1a; 翻译&#xff1a;无法确定17的“tools.jar”库的路径&#xff08;C:\Program Files\Java\jdk-17&#xff09; 原因&#xff1a;idea版本是2020.2&#xff0c;而jdk版本是17&#xff0…

动态规划-

关键词&#xff1a; 重叠子问题&#xff1b;每一个状态一定是由上一个状态推导出来(类似数列a^n f(a^n-1,a^n-2)) 步骤&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目&#…

01_02_mysql06_(视图-存储过程-函数(变量、流程控制与游标)-触发器)

视图 使用 视图一方面可以帮我们使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。比如&#xff0c;针对一个公司的销售人员&#xff0c;我们只想给他看部分数据&#xff0c;而某些特殊的数据&#xff0c;比如采购的价格&#xff0…

多微服务合并为一个服务

公司微服务细分太多&#xff0c;最近跟我提说需要将几个微服务合为单体&#xff0c;经过几天的查阅&#xff0c;决定用二次打包的方式进行合并&#xff0c;然后部署的时候在nginx改下合并的微服务转发路劲即可&#xff0c;不需要前端修改路劲了。 方案 采用二次打包的方式进行…

【2024软件测试面试必会技能】Unittest(6):unittest_构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…