如何基于单列的行内容特征将数据拆分为两个独立列
方案1:使用Python实现
你可以直接运行以下Python脚本处理输入文件:
current_contig = "" # 替换为你的实际输入、输出文件路径 with open("input.txt", "r", encoding="utf-8") as f_in, open("output.txt", "w", encoding="utf-8") as f_out: for line in f_in: line = line.strip() # 跳过空行 if not line: continue # 遇到3C开头的行就更新当前记录值 if line.startswith("3C-assembly|contig_"): current_contig = line # 遇到ptg开头的行就和当前3C值拼接输出 elif line.startswith("ptg000") and current_contig: f_out.write(f"{current_contig} {line}\n")
运行脚本后输出的文件就是你需要的格式。
方案2:使用awk一行命令实现
如果你使用Linux/macOS系统,直接在终端运行以下命令即可快速处理:
awk '/^3C-assembly\|contig_/{cur=$0; next} /^ptg000/{print cur, $0}' input.txt > output.txt
命令逻辑和Python脚本完全一致,执行效率更高,适合处理大体积的文本文件。
方案3:Excel Power Query实现
如果你习惯用Excel图形化操作,可按以下步骤处理:
- 把单列数据粘贴到Excel A列,选中A列后点击「数据」选项卡 → 「从表格/范围」加载到Power Query编辑器
- 新增自定义列,公式设置为:
if Text.StartsWith([Column1], "3C-assembly|contig_") then [Column1] else null - 选中新增的自定义列,使用「填充」→「向下」功能,把所有空值填充为最近的3C前缀值
- 筛选行,只保留原Column1列以
ptg000开头的行 - 调整列顺序后导出到Excel表格即可
内容的提问来源于stack exchange,提问作者Karim
相关产品推荐
相关产品推荐

