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都是常见的纯文本模式,常用于保存数据。

posted on   寂寞梧桐#  阅读(500)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示