Python之csv文件和JSON数据
概述
csv文件中的每行代表电子表格的一行,逗号分隔了该行中的单元格
如:4/5 2022 13:15,apples,73
csv文件的特点:
- 值没有类型,所有的东西都是字符串;
- 没有字体大小颜色的设置
- 没有多个工作表
- 不能指定单元格的高度和宽度
- 不能合并单元格
- 不能嵌入图像或者图表
打开csv文件
import csv #导入csv
exampleFile=open('example.csv')#打开文件
exampleReader=csv.reader(exampleFile)#读取文件(或者readlines按照行读取)
exampleData=list(exampleReader)#列出文件
exampleDate[row][col]#访问特定行(row)和列(col)的值
exampleDate[0][0]#进入第一个列表并且给出第一个字符串
for row in exampleReader: #for循环读取Reader的数据
print(str(exampleReader.line_num)+str(row))#line_num取得行号
写入csv文件
import csv
outputFile=open('output.csv','w',newline='')#'w'以写的模式打开文件
outputWriter=csv.writer(outputFile)#传递csv.writer创建writer对象
outputWriter=csv.writer(outputFile,delimiter='\t',lineterminator='\n\n')#将单元格之间的字符改变为制表符
outputWriter.writerow(['spam','egg','bacon','ham'])#writerow()方法接收一个列表参数,列表中的每个词,放在输出csv上
outputWriter.close()#关闭文件
项目例子:
csv项目中删除表头
- 找出当前工作目录的所有csv文件
- 读取每个文件的全部内容
- 跳过第一行,将内容写入一个新的csv文件
在代码层面要有: - 循环遍历从os.listdir()得到文件的列表,跳过非csv文件
- 创建一个csv Reader对象,读取该文件的内容,利用line_num属性确定跳过哪一行
- 创建一个csv Writer对象,将读入的数据写入到新的文件
- 最后保存文件
代码:
import csv,os
os.makedirs('filename',exist_ok=Ture)
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv')#跳过不是的csv文件
continue
print('removing header from'+csvFilename+'...')
csvRows=[]
csvFileobj=open(csvFilename)
readerobj=csv.reader(csvFileObj)
for row in readerObj:
if readerobj.line_num==1:
contine
csvRows.append(row)
csvFileobj.close()
csvFileobj=open(os.path.join('filename',csvFilename),'w',newline='')
csvWrinter=csv.writer(csvFileobj)
for row in csvRows:
csvWriter.writerow(row)
csvFileobj.close()
JSON
python的json模块处理json字符串和python值之间的转换的所有的细节,得到了json.load()和json.dump()函数。
import json
jsonDataAasPythonVaule={...}#字典值
jsondatapythonValue=json.load(stringofjsonData)#使用load函数读取json数据
jsondatapythonValue=json.dump(stringofjsonData)#使用dump函数读读出json数据该值是以下python数据类型之一:字典列表、整数、浮点数、字符串、布尔值或者None。
项目实例:
取得当前天气的数据:
程序执行的操作:
- 命令行读取请求位置
- 下载json天气的数据
- 打印今天和未来俩天的天气
代码完成的任务: - 连接sys.argv()中的字符串,得到天气的位置
- 调用request.load()将json字符串转换为python数据结构
- 打印天气预报
代码:
import json,requst,sys
if len(sys.argv)<2:
print('useage:quickWeather.py location')
sys.exit()
location='.'jion(sys.argv[1:])
url='http://api.openweathermap.org/data/2.5/forecatst/daily?q=%s&cnt=3' %(location)
response=request.get(url)
response.raise_for_status()
weatherData=json.load(response.text)
w=weatherData['list']
print('current weather in %s:'(localtion))
print(w[0]['weather'][0][main],'-',w[0]['weather'][0]['description])
print()
print('Toworrow:')
print(w[1]['weather'][0][main],'-',w[1]['weather'][0]['description'])
print()
print('day after tomorrow:')
print(w[1]['weather'][0][main],'-',w[2]['weather'][0]['description'])
#在程序中w[0]w[1]w[2]表示的是今天、明天和后天的天气
注意:json和csv都是常见的纯文本模式,常用于保存数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!