如何批量处理文件:在指定字段的最后一个数字后插入逗号(R/Python/Linux)
批量处理CSV文件字段的实现方法
Python 实现
适合需要自定义逻辑的场景,直接通过文件读写+正则处理完成:
import re def process_line(line): # 按逗号拆分行,保留空字段适配末尾逗号的情况 parts = line.strip().split(',') if len(parts) >= 3: field = parts[2] # 匹配最后一个数字后跟字母的位置,插入逗号 modified_field = re.sub(r'(\d)([A-Za-z])', r'\1,\2', field) parts[2] = modified_field # 还原原行的换行符和末尾逗号格式 return ','.join(parts) + ('\n' if line.endswith('\n') else '') # 替换为你的输入、输出文件名 input_file = 'input.txt' output_file = 'output.txt' with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out: for line in f_in: f_out.write(process_line(line))
R 实现
适合熟悉R环境的用户,借助字符串处理包完成批量修改:
library(stringr) # 读取目标文件 lines <- readLines("input.txt") process_line <- function(line) { parts <- str_split(line, ",", simplify = TRUE) if (ncol(parts) >= 3) { field <- parts[1, 3] # 在最后一个数字与后续字母间插入逗号 modified_field <- str_replace(field, "(\\d)([A-Za-z])", "\\1,\\2") parts[1, 3] <- modified_field } paste(parts, collapse = ",") } # 处理所有行并写入输出文件 processed_lines <- sapply(lines, process_line) writeLines(processed_lines, "output.txt")
Linux 环境(sed命令)
适合终端快速批量处理,无需编写脚本:
sed -E 's/^([^,]*,[^,]*,)([^,]*)([0-9])([A-Za-z])([^,]*)(,.*)$/\1\2\3,\4\5\6/' input.txt > output.txt
说明:通过正则分组定位第3个字段内的目标位置,插入逗号后重新拼接整行,直接将结果写入输出文件,原文件不受影响。
内容的提问来源于stack exchange,提问作者accibio
相关产品推荐
相关产品推荐

