Python实战:3种高效方法将TXT转CSV(附完整代码)
Python实战3种高效方法将TXT转CSV附完整代码在日常数据处理工作中我们经常需要将文本文件TXT转换为更结构化的CSV格式。无论是处理日志文件、数据采集结果还是简单的数据交换这种转换都是数据分析师和开发者的基本功。本文将介绍三种高效实用的Python方法帮助你在不同场景下快速完成转换任务。1. 基础文件操作法纯Python实现对于简单的TXT文件转换需求使用Python内置的文件操作功能就能轻松搞定。这种方法不依赖任何第三方库适合轻量级数据处理场景。# 读取文本文件内容并输出到CSV文件 with open(data.txt, r) as input_file, open(data.csv, w, newline) as output_file: for line in input_file: # 假设txt文件中的字段由逗号和空格分隔 fields line.strip().split(, ) # 将字段以逗号分隔写入csv文件 output_file.write(,.join(fields) \n)关键参数说明newline确保在不同操作系统上正确处理换行符strip()去除每行首尾的空白字符split(, )按指定分隔符拆分字段注意这种方法假设TXT文件已经使用固定分隔符如逗号组织数据。如果分隔符不统一需要先进行数据清洗。2. 标准库解决方案csv模块详解Python内置的csv模块提供了更专业的CSV文件处理能力特别适合处理复杂格式的文本数据。2.1 基本读写操作import csv with open(data.txt, r) as input_file, open(data.csv, w, newline) as output_file: csv_reader csv.reader(input_file) csv_writer csv.writer(output_file) for row in csv_reader: csv_writer.writerow(row)2.2 处理带表头的数据当TXT文件包含列名时使用DictReader/DictWriter能更好地处理字段映射import csv with open(data_with_header.txt, r) as input_file: csv_reader csv.DictReader(input_file) data [row for row in csv_reader] with open(output.csv, w, newline) as output_file: fieldnames data[0].keys() if data else [] csv_writer csv.DictWriter(output_file, fieldnamesfieldnames) csv_writer.writeheader() csv_writer.writerows(data)csv模块优势对比特性基础文件操作csv模块自动处理引号❌✅支持不同分隔符需手动处理内置支持处理空值需手动处理自动处理性能较快稍慢代码复杂度低中等3. 数据分析利器pandas高级转换对于大型数据集或需要复杂转换的场景pandas库提供了最强大的解决方案。3.1 基本转换import pandas as pd # 读取TXT文件 df pd.read_csv(data.txt, delimiter, ) # 写入CSV文件 df.to_csv(output.csv, indexFalse)3.2 处理复杂格式pandas可以轻松应对各种复杂情况# 处理不规则分隔符 df pd.read_csv(irregular_data.txt, sep\s*,\s*, enginepython) # 处理缺失值 df pd.read_csv(data_with_missing.txt, na_values[NA, null]) # 指定列数据类型 df pd.read_csv(data.txt, dtype{Age: int32, Salary: float64}) # 保存时控制精度 df.to_csv(output.csv, float_format%.2f, encodingutf-8)pandas性能优化技巧使用chunksize参数处理大文件chunk_iter pd.read_csv(large_data.txt, chunksize10000) for chunk in chunk_iter: process(chunk)指定dtype减少内存占用dtypes {id: int32, price: float32} df pd.read_csv(data.txt, dtypedtypes)只读取需要的列usecols [name, date, value] df pd.read_csv(data.txt, usecolsusecols)4. 实战场景解决方案4.1 日志文件转换处理服务器日志时常需要将半结构化文本转为CSVimport re import pandas as pd log_pattern r(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}) (\w) (.*) logs [] with open(server.log, r) as f: for line in f: match re.match(log_pattern, line) if match: logs.append({ date: match.group(1), time: match.group(2), level: match.group(3), message: match.group(4) }) pd.DataFrame(logs).to_csv(log_analysis.csv, indexFalse)4.2 处理多分隔符数据当数据中存在多种分隔符时可以先用正则表达式统一处理import re def clean_line(line): # 将各种空白符统一替换为逗号 return re.sub(r[\s,;|], ,, line.strip()) with open(messy_data.txt, r) as infile, open(clean_data.csv, w) as outfile: for line in infile: outfile.write(clean_line(line) \n)4.3 处理大型文件的内存优化对于超大文件可以使用生成器逐行处理import csv def process_large_file(input_path, output_path): with open(input_path, r) as infile, open(output_path, w, newline) as outfile: reader csv.reader(infile) writer csv.writer(outfile) # 处理表头 headers next(reader) writer.writerow([h.strip() for h in headers]) # 逐行处理数据 for row in reader: processed_row [field.strip() for field in row] writer.writerow(processed_row) process_large_file(huge_data.txt, huge_output.csv)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2436405.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!