如何将指定格式纯文本文件结构化转换为逗号分隔的CSV文件
文本转CSV实现方案
下面提供两种可直接落地的实现方案,适配不同使用场景:
方案1:Python脚本实现(跨平台通用)
思路是按行读取原始文本,每6行划分为一个数据组,逐行解析字段值后输出为CSV格式,代码示例如下:
import csv # 定义输出列名,两个length分别对应靶序列长度、miRNA长度 headers = ["target", "length", "miRNA", "length", "mfe", "p-value"] output_rows = [] current_row = [] with open("input.txt", "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue # 拆分键和值,处理冒号前后的空格 key, value = [i.strip() for i in line.split(":", 1)] if key == "mfe": # 移除mfe后的单位后缀 value = value.split()[0] current_row.append(value) # 每6个字段为完整一行数据 if len(current_row) == 6: output_rows.append(current_row) current_row = [] # 写入CSV文件 with open("output.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerow(headers) writer.writerows(output_rows)
使用方式:将原始文本保存为input.txt,和脚本放在同目录下运行即可得到符合要求的output.csv。
方案2:awk单行命令(适合Linux/macOS终端直接运行)
类Unix系统下无需写脚本,直接在终端执行以下命令即可完成转换:
awk -F': ' 'BEGIN{OFS=","; print "target","length","miRNA","length","mfe","p-value"} {gsub(/ kcal\/mol/,"",$2); row=row sep $2; sep=OFS} NR%6==0{print row; row=sep=""}' input.txt > output.csv
执行后直接生成标准CSV格式的输出文件。
内容的提问来源于stack exchange,提问作者Diego Munoz
相关产品推荐
相关产品推荐

