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

使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应

  • 使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应
  • 我要用 chatgpt,也问过,但是比 deepseek 还是差一个级别,具体如下:
package mainimport ("bufio""bytes""fmt""golang.org/x/net/html/charset""golang.org/x/text/encoding/unicode""golang.org/x/text/transform""io""os""strings"
)// detectBOM 检测常见的BOM类型并返回编码名称和BOM长度
func detectBOM(b []byte) (enc string, bomLen int) {// UTF-8 BOMif len(b) >= 3 && b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF {return "UTF-8 BOM", 3}// UTF-16 LE/BEif len(b) >= 2 {if b[0] == 0xFF && b[1] == 0xFE {return "UTF-16LE", 2}if b[0] == 0xFE && b[1] == 0xFF {return "UTF-16BE", 2}}// UTF-32 LE/BE (可能不常见,但示例处理)if len(b) >= 4 {if b[0] == 0xFF && b[1] == 0xFE && b[2] == 0x00 && b[3] == 0x00 {return "UTF-32LE", 4}if b[0] == 0x00 && b[1] == 0x00 && b[2] == 0xFE && b[3] == 0xFF {return "UTF-32BE", 4}}return "", 0
}// ReadTextFile 逐行读取文本文件,自动处理编码和BOM
func ReadTextFile(filename string) ([]string, error) {file, err := os.Open(filename)if err != nil {return nil, err}defer file.Close()// 读取前4字节用于BOM检测bomBuf := make([]byte, 4)n, err := file.Read(bomBuf)if err != nil && err != io.EOF {return nil, err}bomBuf = bomBuf[:n]enc, bomLen := detectBOM(bomBuf)var source io.Readervar decoder transform.Transformerif enc != "" {// 处理带BOM的情况remaining := bomBuf[bomLen:]source = io.MultiReader(bytes.NewReader(remaining), file)switch enc {case "UTF-8 BOM":decoder = unicode.UTF8.NewDecoder()case "UTF-16LE":decoder = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder()case "UTF-16BE":decoder = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewDecoder()default:return nil, fmt.Errorf("unsupported encoding: %s", enc)}} else {// 无BOM时检测编码source = io.MultiReader(bytes.NewReader(bomBuf), file)br := bufio.NewReader(source)// 读取前1024字节进行编码检测detectBuf, err := br.Peek(1024)if err != nil && err != io.EOF {return nil, err}// 自动检测编码e, _, _ := charset.DetermineEncoding(detectBuf, "")if e == nil {e = unicode.UTF8 // 默认UTF-8}decoder = e.NewDecoder()source = br}// 创建UTF-8转换Readerutf8Reader := transform.NewReader(source, decoder)scanner := bufio.NewScanner(utf8Reader)var lines []stringfor scanner.Scan() {lines = append(lines, scanner.Text())}if err := scanner.Err(); err != nil {return nil, err}return lines, nil
}// 过滤双引号已经前后空格
func Filter(lists []string) []string {r := make([]string, 0, len(lists))for _, list := range lists {item := strings.TrimSpace(list)if len(item) >= 2 {first := item[0]last := item[len(item)-1]if first == last && first == '"' {r = append(r, strings.TrimSpace(item[1:len(item)-1]))} else {r = append(r, item)}} else {r = append(r, item)}}return r
}
func main() {name := "./csv/export.csv"lines, err := ReadTextFile(name)if err != nil {fmt.Println("读取错误:" + err.Error())return}for _, line := range lines {lists := Filter(strings.Split(line, "\t"))fmt.Println(line + "  ==>  " + strings.Join(lists, ","))}}

相关文章:

使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应

使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应我要用 chatgpt,也问过,但是比 deepseek 还是差一个级别,具体如下: package mainimport ("bufio&qu…...

车载诊断架构 --- LIN节点路由转发注意事项

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...

Eclipse2024中文汉化教程(图文版)

对应Eclipse,部分人需要中文汉化,本章教程,介绍如何对Eclipse进行汉化的具体步骤。 一、汉化前的Eclipse 默认安装Eclipse的时候,默认一般都是English的,我当前版本是使用的是2024-06版本的Eclipse。 二、汉化详细步骤 点击上方菜单选项卡,Hep——Install New Software……...

网络协议相关知识有哪些?

前言 网络协议的基础是OSI和TCP/IP模型,这两个模型是理解协议分层的关键。 正文(仅是个人理解,如有遗漏望海涵) 网络协议是网络中设备间通信的规则和标准,涉及数据传输、路由、错误控制等多个方面。以下是网络协议相关知识的系统梳理: 一、网络协议分层模型 1、OSI七…...

医院安全(不良)事件上报系统源码,基于Laravel8开发,依托其优雅的语法与强大的扩展能力

医院安全(不良)事件上报系统源码 系统定义: 规范医院安全(不良)事件的主动报告,增强风险防范意识,及时发现医院不良事件和安全隐患,将获取的医院安全信息进行分析反馈,…...

【第一节】C++设计模式(创建型模式)-工厂模式

目录 前言 一、面向对象的两类对象创建问题 二、解决问题 三、工厂模式代码示例 四、工厂模式的核心功能 五、工厂模式的应用场景 六、工厂模式的实现与结构 七、工厂模式的优缺点 八、工厂模式的扩展与优化 九、总结 前言 在面向对象系统设计中,开发者常…...

分发糖果(力扣135)

题目说相邻的两个孩子中评分更高的孩子获得的糖果更多,表示我们既要考虑到跟左边的孩子比较,也要考虑右边的孩子,但是我们如果两边一起考虑一定会顾此失彼。这里就引入一个思想:先满足右边大于左边时的糖果分发情况,再…...

爬虫小案例豆瓣电影top250(json格式)

1.json格式(仅供学习参考) import requests, json, jsonpathclass Start(object):# 类实例化时会执行def __init__(self):self.headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.…...

RTSP场景下RTP协议详解及音视频打包全流程

RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系 RTSP:负责媒体会话控制(DESCRIBE、SETUP、PLAY、PAUSE),通过SDP协商传输参数(端口、编码格式、封装模式)。RTP:实际传输音视频数…...

关于Transparent native-to-ascii conversion

1、功能 自动转换ASCII编码,即在文件系统上,文件的编码格式为ascii编码,在编辑器(idea/pycharm)中,其展现结果为配置的编码格式,仅展现方便阅读 使用UTF-8并勾选自动转换ASCII编码结果&#x…...

万字长文解析:深入理解服务端渲染(SSR)架构与全栈实践指南

一、SSR核心原理深度剖析 1.1 技术定义与演进历程 服务端渲染(Server-Side Rendering)指在服务器端完成页面DOM构建的技术方案。其发展历程可分为三个阶段: 阶段时期典型技术传统SSR2000-2010JSP/PHP现代SSR2015-2020Next.js/Nuxt.js混合渲…...

Spring事务原理 二

在上一篇博文《Spring事务原理 一》中,我们熟悉了Spring声明式事务的AOP原理,以及事务执行的大体流程。 本文中,介绍了Spring事务的核心组件、传播行为的源码实现。下一篇中,我们将结合案例,来讲解实战中有关事务的易…...

SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)

目录 一、引言二、集成ToolContext示例步骤1: 在`@Tool`标注的工具方法中集成`ToolConext`参数步骤2:`ChatClient`运行时动态设置`ToolContext`参数三、填坑一、引言 在使用AI大模型的工具调用机制时,工具参数都是由大模型解析用户输入上下文获取的,由大模型提供参数给本地…...

本地部署MindSearch(开源 AI 搜索引擎框架),然后上传到 hugging face的Spaces——L2G6

部署MindSearch到 hugging face Spaces上——L2G6 任务1 在 官方的MindSearch页面 复制Spaces应用到自己的Spaces下,Space 名称中需要包含 MindSearch 关键词,请在必要的步骤以及成功的对话测试结果当中 实现过程如下: 2.1 MindSearch 简…...

MyBatis Plus扩展功能

一、代码生成器 二、逻辑删除 三、枚举处理器 像状态字段我们一般会定义一个枚举,做业务判断的时候就可以直接基于枚举做比较。但是我们数据库采用的是int类型,对应的PO也是Integer。因此业务操作时必须手动把枚举与Integer转换,非常麻烦。 …...

深度学习之自然语言处理CBOW预测及模型的保存

自然语言处理CBOW预测及模型的保存 目录 自然语言处理CBOW预测及模型的保存1 自然语言处理1.1 概念1.2 词向量1.2.1 one-hot编码1.2.2 词嵌入1.2.3 常见的词嵌入模型 2 CBOW预测模型搭建2.1 数据及模型确定2.1.1 数据2.1.2 CBOW模型2.1.3 词嵌入降维 2.2 数据预处理2.3 模型搭建…...

qt项目配置部署

Test项目: 子项目testFileHelper 1.新建一个test项目的子项目:取名testFileHelper 2.编写测试用例 3.pro文件中引入qosbrowser 4.引入测试对象的cpp和头文件 2.在项目中引入资源文件testfile.txt,在其中输入abc 实现thrid目录复用 移动thrid 将thrild目录统一放在章…...

java方法学习

java 方法 在Java中,方法是类(或对象)的行为或功能的实现。(一起实现一个功能)java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段。 方法是解决一类问题步骤的有序结合。 方法包含于类或…...

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…...

解析CV/多模态算法的要点及技术特点,弥补单模态信息不足的多模态应用的哪些场景中?

CV(计算机视觉)多模态算法是计算机科学领域的重要研究方向,融合了多种模态的数据来提升对视觉信息的理解和处理能力。 以下是一个结合自动驾驶行业的多模态大模型算法示例,采用特征级融合策略,结合摄像头图像和激光雷…...

[漏洞篇]文件上传漏洞详解

[漏洞篇]文件上传漏洞详解 一、介绍 1. 概念 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后&#xf…...

11.Docker 之分布式仓库 Harbor

Docker 之分布式仓库 Harbor Docker 之分布式仓库 Harbor1. Harbor 组成2. 安装 Harbor Docker 之分布式仓库 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,由 VMware 开源,其通过添加一些企业必需的功能特性,例…...

Python项目源码34:网页内容提取工具1.0(Tkinter+requests+html2text)

------★Python练手项目源码★------- Python项目32:订单销售额管理系统1.0(TkinterCSV) Python项目31:初学者也能看懂的聊天机器人1.0源码(命令行界面Re正则表达式) Python项目源码30:待办事…...

使用Termux将安卓手机变成随身AI服务器(page assist连接)

通过以下方法在安卓手机上运行 Ollama 及大模型,无需 Root 权限,具体方案如下: 通过 Termux 模拟 Linux 环境运行 核心工具: 安装 (安卓终端模拟器)()]。借助 proot-distro 工具安装 Linux 发行版&#xf…...

SpringBoot3中跨域问题解决

问题 SpringBoot3 中处理跨域请求 异常 浏览器在 localhost:3000 地址请求后端 http://127.0.0.1:8080 时, 报错提示 CORS 问题. 默认使用 Get 请求正常, 其他会提示. 使用 SpringBoot 3.4.2 版本配合 SpringSecurity 配置 Access to fetch at http://127.0.0.1:8080/todo-…...

kotlin Java 使用ArrayList.add() ,set()前面所有值被 覆盖 的问题

一、问题描述和分析 结构体的字段的属性为静态, 意味着该类的所有对象共享同一个属性,所以尽管集合里存的是不同的对象,但是对象的属性还是同一个值 修改其中任何一个,其他的也会“被修改”。使用kotlin语言时候,经常…...

力扣-回溯-51 N皇后

思路 在棋盘上放皇后在回溯方法的树上来说&#xff0c;深度就是每一行放的皇后&#xff0c;宽度就是for循环里遍历放皇后&#xff0c;还有个问题是需要判断当前位置是否允许放皇后 代码 class Solution { public:vector< vector<string> > result;vector<str…...

flink-cdc同步数据到doris中

1 创建数据库和表 1.1 数据库脚本 这样直接创建数据库是有问题&#xff0c;因为后面发现superset连接使用doris://root:12345610.101.12.82:9030/internal.eayc?charsetutf8mb4 -- 创建数据库eayc create database if not exists ods_eayc; -- 创建数据表2 数据同步 2.1 f…...

Git命令行入门

诸神缄默不语-个人CSDN博文目录 之前写过一篇VSCode Git的博文&#xff1a;VSCode上的Git使用手记&#xff08;持续更新ing…&#xff09; 现在随着开发经历增加&#xff0c;感觉用到命令行之类复杂功能的机会越来越多了&#xff0c;所以我专门再写一篇Git命令行的文章。 G…...

DeepSeek R1/V3满血版——在线体验与API调用

前言&#xff1a;在人工智能的大模型发展进程中&#xff0c;每一次新模型的亮相都宛如一颗投入湖面的石子&#xff0c;激起层层波澜。如今&#xff0c;DeepSeek R1/V3 满血版强势登场&#xff0c;为大模型应用领域带来了全新的活力与变革。 本文不但介绍在线体验 DeepSeek R1/…...