在python中使用CSV、JSON、XML

本文介绍了如何在Python中使用内置库处理CSV、JSON和XML数据,包括读写操作,以及如何利用Pandas进行高效的数据转换。CSV文件常用在数据存储,Python提供了csv库支持读写。JSON广泛用于web服务,Python的json库便于读写。XML格式虽然操作较繁琐,但具有更多功能,如命名空间和行业标准。
摘要由CSDN通过智能技术生成

目录

CSV

读CSV

写CSV

用pandas库来读写CSV

JSON

读写JSON(与字典配合使用)

格式转换

XML


python以其简明的风格和强大的库支持在大数据时代占得一席宝地。特别是在cv网格化大数据处理、音频、自然语言等领域,均有很多应用。基于python的深度学习发展正如火如荼。先掌握好如何在python中使用几大数据结构是打好基础的第一步。

CSV

CSV 文件是最常用的数据存储方法。大部分 Kaggle 比赛中的数据都存储在 CSV 文件中。Python 中有内置的 CSV 库来支持读写操作,通常情况下,我们会先将数据读入表中。

在下面的代码中,当调用 csv.reader()函数时,可以访问所有的 CSV 数据。而 csvreader.next()函数的功能是从 CSV 中读取一行,当多次连续调用时,会自动读取下一行。也可以使用 for 循环遍历 csv 的每一行,同样用  csv.reader()函数读取每一行。这里需要注意,要确保每行中的列数相同,否则,在处理时,可能会遇到错误。

读CSV

import csv 
  
filename = "my_data.csv"
  
fields = [] 
rows = [] 
  
# Reading csv file 
with open(filename, 'r') as csvfile: 
    # Creating a csv reader object 
    csvreader = csv.reader(csvfile) 
      
    # Extracting field names in the first row 
    fields = csvreader.next() 
  
    # Extracting each data row one by one 
    for row in csvreader: 
        rows.append(row)
  
# Printing out the first 5 rows 
for row in rows[:5]: 
    print(row)

写CSV

同样,用 Python 写入 CSV 文件也很容易。先在单个列表中设置字段名称,并在列表中写入数据。这次创建一个 writer()对象,使用这个方法将数据写入文件,与读取 CSV 数据的方式非常相似。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
读取CSV文件: ```python import csv # 打开CSV文件 with open('data.csv', newline='') as csvfile: reader = csv.reader(csvfile) # 遍历CSV文件的每一行 for row in reader: print(', '.join(row)) ``` 读取JSON文件: ```python import json # 打开JSON文件 with open('data.json') as jsonfile: data = json.load(jsonfile) # 遍历JSON文件的每个对象 for obj in data: print(obj) ``` 读取XML文件: ```python import xml.etree.ElementTree as ET # 打开XML文件 tree = ET.parse('data.xml') root = tree.getroot() # 遍历XML文件的每个元素 for child in root: print(child.tag, child.attrib) ``` 读取Avro文件: ```python import avro.schema from avro.datafile import DataFileReader from avro.io import DatumReader # 打开Avro文件 schema = avro.schema.parse(open("data.avsc").read()) reader = DataFileReader(open("data.avro", "rb"), DatumReader()) # 遍历Avro文件的每条记录 for record in reader: print(record) reader.close() ``` 在PyQt5设计页面显示CSV文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import csv class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('CSV Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开CSV文件 with open('data.csv', newline='') as csvfile: reader = csv.reader(csvfile) # 遍历CSV文件的每一行 for i, row in enumerate(reader): # 设置表格行数 table.setRowCount(i + 1) # 设置表格列数 table.setColumnCount(len(row)) # 设置表格内容 for j, value in enumerate(row): item = QTableWidgetItem(value) table.setItem(i, j, item) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示JSON文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import json class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('JSON Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开JSON文件 with open('data.json') as jsonfile: data = json.load(jsonfile) # 遍历JSON文件的每个对象 for i, obj in enumerate(data): # 设置表格行数 table.setRowCount(i + 1) # 设置表格列数 table.setColumnCount(len(obj)) # 设置表格内容 for j, key in enumerate(obj.keys()): # 设置表格列标题 if i == 0: table.setHorizontalHeaderItem(j, QTableWidgetItem(key)) item = QTableWidgetItem(str(obj[key])) table.setItem(i, j, item) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示XML文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem import xml.etree.ElementTree as ET class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('XML Viewer') self.setGeometry(200, 200, 800, 600) # 创建树形控件 tree = QTreeWidget(self) tree.setHeaderLabels(['Tag', 'Text', 'Attributes']) tree.setGeometry(10, 10, 780, 580) # 打开XML文件 tree.clear() tree.setColumnCount(3) # 设置根节点 tree.header().setVisible(True) tree.header().setStretchLastSection(True) tree.setColumnWidth(0, 200) tree.setColumnWidth(1, 400) tree.setColumnWidth(2, 200) tree.setIndentation(20) tree.setAnimated(True) tree.setUniformRowHeights(True) tree.setAutoScroll(True) tree_root = QTreeWidgetItem(tree, ['root', '', '']) tree.addTopLevelItem(tree_root) tree_stack = [(root, tree_root)] while tree_stack: xml_elem, tree_elem = tree_stack.pop() # 设置元素标签 elem_name = xml_elem.tag elem_text = xml_elem.text.strip() if xml_elem.text else '' elem_attrs = ' '.join([f'{k}="{v}"' for k, v in xml_elem.items()]) tree_elem.setText(0, elem_name) tree_elem.setText(1, elem_text) tree_elem.setText(2, elem_attrs) # 遍历子元素 for child in xml_elem: child_elem = QTreeWidgetItem(tree_elem) tree_elem.addChild(child_elem) tree_stack.append((child, child_elem)) tree.expandToDepth(1) tree.resizeColumnToContents(0) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示Avro文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import avro.schema from avro.datafile import DataFileReader from avro.io import DatumReader class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Avro Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开Avro文件 schema = avro.schema.parse(open("data.avsc").read()) reader = DataFileReader(open("data.avro", "rb"), DatumReader()) # 设置表格列数 table.setColumnCount(len(schema.fields)) # 设置表格列标题 for i, field in enumerate(schema.fields): table.setHorizontalHeaderItem(i, QTableWidgetItem(field.name)) # 遍历Avro文件的每条记录 for i, record in enumerate(reader): # 设置表格行数 table.setRowCount(i + 1) # 设置表格内容 for j, field in enumerate(schema.fields): item = QTableWidgetItem(str(record[field.name])) table.setItem(i, j, item) reader.close() self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值