Rust读写CSV文件 一维Vec类型元素、二维Vec类型元素写入CSV文件

本文主要介绍Rust读写CSV文件方法, Vec类型元素基本操作方法,Rust把一维Vec类型元素、二维Vec类型元素写入CSV文件方法。

实例测试:

要求读“log.csv”文件数据,把“时间”列数据和“次数”列数据写入日志处理结果1.csv文件,把“时间”列数据写入日志处理结果2.csv文件。

log.csv文件:
在这里插入图片描述
日志处理结果1.csv文件:
在这里插入图片描述
日志处理结果2.csv文件:
在这里插入图片描述

实例代码

Cargo.toml添加依赖

[dependencies]
csv = "1.3.0"

main.rc文件代码

#[macro_use]
pub mod macros;
use csv::ReaderBuilder;
use csv::WriterBuilder;
use std::fs::File;
use std::str;fn main() -> Result<(), Box<dyn std::error::Error>> {//创建一维Veclet vec_headers = Vec::from(["日期时间".to_string(),"次数".to_string(),]); //创建一维Veclet vec_headers_2 = Vec::from(["日期时间".to_string(),]); // 创建二维Veclet mut vec_matrix = Vec::new();//创建一维Veclet mut vec_date = Vec::new();  let input_path = "log.csv";/* 读取csv日志文件,并提取主要数据 */read_csv_file(&input_path, &mut vec_matrix, &mut vec_date).expect("Failed to read CSV file");/* 处理结果写入csv文件 */let out_path_1 = "日志处理结果1.csv";let _z = write_csv_file(&out_path_1, &vec_headers, &vec_matrix);let out_path_2 = "日志处理结果2.csv";let _z = write_csv_file_2(&out_path_2, &vec_headers_2,&vec_date);//打印等待用户按回车键,退出控制台println!("温馨提示:请按回车键退出......");// 等待用户按下回车键let _ = std::io::stdin().read_line(&mut String::new()).expect("TODO:panic message");Ok(())
}/*读取csv文件,并提取主要数据 */
pub fn read_csv_file(path: &str,vec_matrix: &mut Vec<Vec<String>>,vec_date: &mut Vec<String>,
) -> Result<(), Box<dyn std::error::Error>> {let file = File::open(path)?;let mut reader = ReaderBuilder::new().from_reader(file);for result in reader.records() {//创建一维Veclet mut vec = Vec::new();let record = result?;// 处理每一行的数据//println!("{:?}", record);//println!("{:?}", record.get(0));//println!("{}", record.get(0).unwrap());vec_date.push(record.get(0).unwrap().to_string());vec.push(record.get(0).unwrap().to_string());vec.push(record.get(2).unwrap().to_string());//打印//println!("{:?}", vec);//添加到二维Vecvec_matrix.push(vec);}//打印println!("vec_date:");println!("{:?}", vec_date);//打印println!("vec_matrix包含记录{}条:", vec_matrix.len());for vec_item in vec_matrix.iter() {println!("{:?}", vec_item);}Ok(())
}/*把二维Vec写入csv文件 */
pub fn write_csv_file(path: &str,headers: &Vec<String>,records: &Vec<Vec<String>>,
) -> Result<(), Box<dyn std::error::Error>> {let file = File::create(path)?;let mut writer = WriterBuilder::new().from_writer(file);writer.write_record(headers)?;for record in records {writer.write_record(record)?;}// 确保所有数据都被写入writer.flush()?;println!("已成功写入“{}”文件", path);Ok(())
}/*把一维Vec写入csv文件 */
pub fn write_csv_file_2(path: &str,headers: &Vec<String>,record: &Vec<String>,
) -> Result<(), Box<dyn std::error::Error>> {let file = File::create(path)?;let mut writer = WriterBuilder::new().from_writer(file);writer.write_record(headers)?;// 遍历Vec,将每个元素作为一行写入CSVfor item in record {// 将每个String元素作为单个记录写入CSVwriter.write_record(&[&item])?;}// 确保所有数据都被写入writer.flush()?;println!("已成功写入“{}”文件", path);Ok(())
}

macros.rs文件代码

#[allow(unused_macros)]
#[macro_export]
macro_rules! hashmap {($( $key: expr => $val: expr ),*) => {{let mut map = ::std::collections::HashMap::new();$( map.insert($key, $val); )*map}}
}#[allow(unused_macros)]
#[macro_export]
macro_rules! hashmap_s {($( $key: expr => $val: expr ),*) => {{let mut map = ::std::collections::HashMap::new();$( map.insert($key.to_string(), $val); )*map}}
}#[macro_export]
macro_rules! vec_s {($( $val: expr ),*) => {{let mut vec = ::std::vec::Vec::new();$( vec.push($val.to_string()); )*vec}}
}#[macro_export]
macro_rules! hashset {($( $val: expr ),*) => {{let mut vec = ::std::collections::HashSet::new();$( vec.insert($val); )*vec}}
}#[macro_export]
macro_rules! hashset_s {($( $val: expr ),*) => {{let mut vec =  ::std::collections::HashSet::new();$( vec.insert($val.to_string()); )*vec}}
}
运行结果

在这里插入图片描述


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

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

相关文章

06-数组

1. 为什么需要数组 一个养鸡场有6只鸡&#xff0c;它们的体重分别是3kg&#xff0c;4kg&#xff0c;1kg&#xff0c;2kg&#xff0c;6kg&#xff0c;3kg。 没有数组&#xff0c;就需要定义六个变量&#xff0c;一个变量代表一只鸡的体重。 使用数组&#xff0c;就可以定义一…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期&#xff0c;全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示&#xff0c;据文化和旅游部数据中心测算&#xff0c;全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%&#xff0c;而酒店作为一个高…

Dashboard 安装部署

Dashboard 安装部署 Dashboard 安装部署 一&#xff1a;下载 二&#xff1a;部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败&#xff0c;可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…

Python - 金三银四心路历程 之 数据结构与算法 刷题

目录 一.引言 二.心路历程 三.刷题经历 四.刷题历程 五.总结 一.引言 <夜深人静写算法> 是 23 年 12 月底博主打算跳槽时开始做刷题准备做的专栏&#xff0c;前后准备了大约一个月&#xff0c;刷题完毕后简单准备了项目和简历后就开始加入找工作大军了&#xff0c;最…

VISIO 画任意形状的封闭图案

** 最终要的效果 ** 1. 先用任意曲线画个圈 2. 在开发工具中&#xff0c;找到对应的&#xff0c;先点连接&#xff0c;再点修剪 3. 多余的部分删掉

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行&#xff0c;会自动生成配置文件&#xff0c;最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

三种中成药分享:舒肝健脾,脾肝同调。

三个中成药分享给大家&#xff0c;舒肝健脾&#xff0c;脾肝同调。 第一&#xff0c;【木香顺气丸】&#xff0c;它具有健脾和胃&#xff0c;镇气祛湿的功效。如果平时总感觉到身上没劲、疲惫没精神&#xff0c;四肢还很沉重&#xff0c;吃完饭肚子里总是胀气&#xff0c;伴随…

Isaac Sim 5 Ros相关(学习笔记5.8.3)

一.RGB、Depth、bbox话题发送 1.新建一个二驱示例小车 路径为Robot-Jetbot&#xff08;如果找不到也可以直接搜索Jetbot&#xff09; 2.添加Action Graph 导航栏中&#xff1a;Window - Visual Scripting - Action Graph&#xff0c;建立一个工作区&#xff0c;这个工作区中…

Python AI库pandas读写数据库的应用操作——以sqlite3为例

Python AI库pandas读写数据库的应用操作——以sqlite3为例 本文默认读者具备以下技能&#xff1a; 熟悉python基础知识&#xff0c;vscode或其它编辑工具 已阅读Pandas基础操作文章,了解pandas常见操作 具备自主扩展学习能力 在数据分析和人工智能领域&#xff0c;pandas库和s…

Llama 3 超级课堂

https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 第一节作业 streamlit run web_demo.py /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct

Context capture/Pix4Dmapper/AutoCAD/CASS/EPS软件的安装流程与使用方法;土方量计算;无人机摄影测量数据处理

目录 专题一 无人机摄影测量技术应用现状及其发展 专题二 基本原理和关键技术讲解 专题三 无人机影像外业数据获取 专题四 数据处理环境建立与软件熟悉 专题五 GNSS数据土方量计算 专题六 基于无人机影像数据的正射影像制作 专题七 基于无人机影像数据的三维模型制作 专…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址&#xff1a;DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选&#xff0c;适用于垂直站点、科技博客、个人站&#xff0c;扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

Linux 基础命令

目录 1.ls 2. cd 3. tree 4. touch 5.mkdir / rmdir ​编辑 6.rm 7.man 8.find which whereis 9.cat more less 10 date cal 11.grep 12.sort uniq 13.zip/unzip 14 tar 15.bc 16.uname 17.热键 在了解Linux基本操作之前&#xff0c;我们首先要了解Linux的一些最…

【人工智能基础】RNN实验

一、RNN特性 权重共享 wordi weight bais 持久记忆单元 wordi weightword baisword hi weighth baish 二、公式化表达 ht f(ht - 1, xt) ht tanh(Whhht - 1 Wxhxt) yt Whyht 三、RNN网络正弦波波形预测 环境准备 import numpy as np import torch from tor…

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

多角度解析动态住宅IP的多元化应用

动态住宅IP指的是在住宅网络中使用的、能够随时间或用户需求配置的IP地址&#xff0c;能够根据网络状况自动调整&#xff0c;为用户提供更加灵活、高效的上网体验。这种IP地址不是固定不变的&#xff0c;而是会定期自动更换&#xff0c;这种IP地址也让使用者的安全得以保障。 作…

OpenSPG docker 安装教程

文章目录 前言自述 一、OpenSPG1.介绍 二、安装步骤1.安装服务端2.客户端部署 前言 自述 我最近是想结合chatglm3-6b和知识图谱做一个垂直领域的技术规范的问答系统&#xff0c;过程中也遇到了很多困难&#xff0c;在模型微调上&#xff0c;在数据集收集整理上&#xff0c;在知…

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展&#xff0c;我们正处于一个高度互联、数据驱动的网络时代。在这个时代&#xff0c;日志审计系统作为网络安全和信息管理的重要工具&#xff0c;发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…