当前位置: 首页 > news >正文

CSV 文件

CSV,全称为 Comma-Separated Values)(逗号分隔值),是一种常用的文本文件格式,用于存储表格数据,如电子表格数据库。它采用纯文本形式,以逗号作为字段之间的分隔符,每行表示一个数据记录。每行文本包含由逗号分隔的一个或多个字段。这些字段通常代表表格中的。CSV文件具有简单、通用和易于处理的特点,在数据处理和数据交换方面被广泛应用。


CSV文件结构

CSV文件由多行组成,每行表示一个数据记录。每行中的字段使用逗号进行分隔,字段之间可以包含文本、数字或日期等数据。文件的第一行通常用于定义字段名,后续行则包含相应的数据值。字段值可以使用引号双引号进行包裹以处理包含逗号或换行符的复杂数据

# -*- coding: UTF-8 -*-
''' grade0.csv
20170110,刘兴怡,Female,B
20170109,刘春燕,Female,B
20170106,周思云,Female,B
20170115,张铭武,Male,A
20170102,徐芳,Female,A
20170113,田益宾,Male,A
20170101,章阳,Male,A
20170112,胡瑞欣,Female,A
'''def csv_to_lst(filename):"""接收文件名为参数,读取数据到二维列表中,返回二维列表。形如[['20170101', '章阳', 'Male', 'A'],... ['20170108', '刘忆宁', 'Male', 'E']]"""with open(filename, 'r', encoding="gbk") as f:grade_in_lst = [line.strip().split(',') for line in f]  # 逐行切分为列表,得到二维列表return grade_in_lstdef sort_lst(list_name, n):"""接收需要排序的二维列表名和整数的排序列序号(范围为:1,2,3,4)为参数,返回排序后的二维列表。"""list_name.sort(key=lambda x: x[n - 1])  # 列序号从1开始,列表中的序列从0开始,排序依据用x[n - 1]return list_name                        # 返回排序后的列表def output(ls):"""接收排序后的二维列表为参数,逐行输出,每行的元素间用制表符分隔。"""for line in ls:             # line 为子列表print(*line, sep='\t')  # *对子列表进行解包,得到多个元素,sep指定分隔符import csv# 创建并写入CSV文件
def create_csv():with open('example.csv', 'w', newline='') as file:writer = csv.writer(file)writer.writerow(["Name", "Age", "City"])writer.writerow(["Alice", 30, "New York"])writer.writerow(["Bob", 25, "Los Angeles"])print("CSV file 'example.csv' created and written successfully.")def save_ls_csv(ls):with open('sort_lst_csv.csv', 'w', newline ='') as file:writer = csv.writer(file)#for line in ls:#    writer.writerow(line)writer.writerows(ls)print("CSV file 'sort_lst_csv.csv' created and written successfully.")def pandas_save_csv(ls):import numpy as npimport pandas as pd# 使用 numpy 创建一个示例数组data = np.array(ls)# 将 numpy 数组转换为 pandas DataFrame#df = pd.DataFrame(data, columns=['A', 'B', 'C'])df = pd.DataFrame(data, columns=['student number', 'name', 'sex','grade'])# 保存为CSV文件df.to_csv('exapandas_save_csvmple.csv', index=False)print("CSV file 'pandas_save_csv.csv' created and saved successfully.")def pandas_save_dict_list_to_csv():import pandas as pddict1 = {'学号': [235,432,204], '姓名': ['Alice', 'Bob', 'Tom'], '排名':[3, 23, 86]}df = pd.DataFrame(dict1, index=range(0,3))df.to_csv('pandas_save_dict_list_to_csv.csv',index = False, encoding='gbk' )def save_ls_hex_csv(ls):with open('sort_lst_hex_csv.csv', 'w', newline ='') as file:writer = csv.writer(file)for line in ls:newline = [hex(int(item)) if str(item).isdigit() else item for item in line]writer.writerow(newline)print("CSV file 'sort_lst_hex_csv.csv' created and written successfully.")if __name__ == '__main__':file = 'grade0.csv'num = int(input("Please input the sort column (1 based) : "))grade_list = csv_to_lst(file)ls_in_sort = sort_lst(grade_list, num)output(ls_in_sort)save_ls_csv(ls_in_sort)pandas_save_csv(ls_in_sort)save_ls_hex_csv(ls_in_sort)pandas_save_dict_list_to_csv()# 假设我们有一个列表和要转换为十六进制的项的索引my_list = [1234, 'abcd', 'xyz']# 转换字符串表示的整数为十六进制hex_list = [hex(int(item)) if str(item).isdigit() else item for item in my_list]print(hex_list)grade_list_hex = csv_to_lst('sort_lst_hex_csv.csv')ls_in_sort_hex = sort_lst(grade_list_hex, 1)output(ls_in_sort_hex)

CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 CSV 文件可能采用 UTF - 8 编码

更改 Excel 编码设置:

 在 Excel 中,可以通过 “数据” 选项卡中的 “自文本 / CSV” 功能来导入文件,并在导入向导中选择正确的文件原始编码。在导入向导步骤中,会有一个 “文件原始格式” 选项,在这里可以选择 UTF - 8 等合适的编码格式来正确读取文件内容。

 使用文本编辑器转换编码:

先使用专业的文本编辑器,如 Notepad++。打开 CSV 文件后,在 “编码” 菜单中查看文件的当前编码。如果是 UTF - 8 等非 Excel 默认支持的编码导致乱码,可以将其转换为 ANSI 编码(不过这种方法可能会丢失一些非 ASCII 字符信息,需要谨慎使用)。

相关文章:

CSV 文件

CSV,全称为 Comma-Separated Values)(逗号分隔值),是一种常用的文本文件格式,用于存储表格数据,如电子表格或数据库。它采用纯文本形式,以逗号作为字段之间的分隔符,每行…...

SpringCloud核心组件(五)

文章目录 Gateway一. 概述简介1. Gateway 是什么2. 什么是网关?3.Gateway 和 Nginx 两个网关的区别什么是流量入口? 4.Gateway 能干嘛5.gateway 三大核心概念6.运行方式 二. 入门案例a.创建gateway模块,在pom.xml中引入依赖b.创建启动类GatewayApplicat…...

TCP为什么需要三次握手和四次挥手,有哪些需要注意的地方?

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。为了确保数据能够准确无误地从一端发送到另一端,TCP设计了一系列机制来保证通信的可靠性,其中包括连接建立和断开的过程。 三次握手(Three-…...

机器学习(基础2)

特征工程 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程API 实例化…...

Cpolar 内网穿透使用

Cpolar登录地址:cpolar - secure introspectable tunnels to localhost 使用固定公网TCP连接ssh ssh -p端口号 用户名公网地址...

ThreadLocal 提供线程局部变量

ThreadLocal作用 相当于建立一个独立的空间,可以把使用频率高的任何类型的数据放到里面,方便调用用来存取数据:set()/get()使用ThreadLocal存储的数据,线程安全 ThreadLocal工具类 /*** ThreadLocal 工具类*/ SuppressWarnings(…...

MongoDB聚合管道数组操作

数组表达式运算符判断数组中是否包含元素( i n ) 并获取元素索引 ( in)并获取元素索引( in)并获取元素索引(indexOfArray) 一、初始化成员数据 db.persons.insertMany([{ "_id" : "1001", "name" : "张三", "fruits" : [ …...

大数据如何助力干部选拔的公正性

随着社会的发展和进步,干部选拔成为组织管理中至关重要的一环。传统的选拔方式可能存在主观性、不公平性以及效率低下等问题。大数据技术的应用,为干部选拔提供了更加全面、精准、客观的信息支持,显著提升选拔工作的科学性和公正性。以下是大…...

Python_爬虫2_爬虫引发的问题

目录 爬虫引发的问题 网络爬虫的尺寸 网络爬虫引发的问题 网络爬虫的限制 Robots协议 Robots协议的遵守方式 Robots的使用 对Robots协议的理解 爬虫引发的问题 网络爬虫的尺寸 爬取网页,玩转网页: 小规模,数据量小,爬取…...

shell编程之编程基础

目录 为什么学习和使用Shell编程Shell是什么shell起源查看当前系统支持的shell查看当前系统默认shellShell 概念 Shell 程序设计语言Shell 也是一种脚本语言用途 如何学好shell熟练掌握shell编程基础知识建议 Shell脚本的基本元素基本元素构成:Shell脚本中的注释和风…...

24.11.15 Vue3

let newJson new Proxy(myJson,{get(target,prop){console.log(在读取${prop}属性);return target[prop];},set(target,prop,val){console.log(在设置${prop}属性值为${val});if(prop"name"){document.getElementById("myTitle").innerHTML val;}if(prop…...

图形几何之美系列:法向量计算之轮廓有向面积辅助法

“ 垂直于平面的直线所表示的向量为该平面的法向量,可以通过法向量识别平面正反面。法向量是轮廓或面的重要特征,求轮廓法向是一种基础的几何工具算法,在图形几何、图像处理等领域具有广泛的应用。” 图形几何之美系列:三维实体结…...

CPU的性能指标总结(学习笔记)

CPU 性能指标 我们先来回顾下,描述 CPU 的性能指标都有哪些。 首先,最容易想到的应该是 CPU 使用率,这也是实际环境中最常见的一个性能指标。 用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用…...

Cadence安装

记录一下安装过程,方便以后安装使用Cadence。 去吴川斌的博客下载安装包,吴川斌博客: https://www.mr-wu.cn/cadence-orcad-allegro-resource-downloads/ 下载阿狸狗破戒大师 我这边下载的是版本V3.2.6,同样在吴川斌的博客下载安装…...

【网络】子网掩码

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是子网掩码,并且能熟练掌握子网掩码的相关计算。 > 毒鸡汤:有些事情,总是不明白,所以我不会…...

Android Osmdroid + 天地图 (二)

Osmdroid 天地图 (二) 前言正文一、定位监听二、改变地图中心三、添加Marker四、地图点击五、其他配置① 缩放控件② Marker更换图标③ 添加比例尺④ 添加指南针⑤ 添加经纬度网格线⑥ 启用旋转手势⑦ 添加小地图 六、源码 前言 上一篇中我们显示了地图…...

使用大语言模型创建 Graph 数据

Neo4j 是开源的 Graph 数据库,Graph 数据通过三元组进行表示,两个顶点一条边,从语意上可以理解为:主语、谓语和宾语。GraphDB 能够通过图来表达复杂的结构,非常适合存储知识型数据,本文将通过大语言实现图数…...

Java poi 模板导出Word 带图片

Java poi 模板导出Word 带图片 重点&#xff01;&#xff01;&#xff01; 官方文档&#xff1a;https://deepoove.com/poi-tl/#_maven 最终效果 模板 其实内容都在官方文档里写的非常明白了 我这里只是抛砖引玉。 Maven依赖 <poi.version>4.1.2</poi.version>…...

SpringCloud-使用FFmpeg对视频压缩处理

在现代的视频处理系统中&#xff0c;压缩视频以减小存储空间、加快传输速度是一项非常重要的任务。FFmpeg作为一个强大的开源工具&#xff0c;广泛应用于音视频的处理&#xff0c;包括视频的压缩和格式转换等。本文将通过Java代码示例&#xff0c;向您展示如何使用FFmpeg进行视…...

shell bash---类似数组类型

0 Preface/Foreword C/C,Python&#xff0c;Java等编程语言&#xff0c;都含有数组类型&#xff0c;那么shell脚本是不是也有类似的语法呢&#xff1f; 1 类似数组类型 1.1 &#xff08;&#xff09;类似数组类型 #! /bin/bashecho "Welcome to bash world!" anim…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

python读取SQLite表个并生成pdf文件

代码用于创建含50列的SQLite数据库并插入500行随机浮点数据&#xff0c;随后读取数据&#xff0c;通过ReportLab生成横向PDF表格&#xff0c;包含格式化&#xff08;两位小数&#xff09;及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...