如何写入无单引号、无分隔符且带空格填充的文件?
问题解决方案
你的代码存在的核心问题
- 每次循环都用
w模式打开输出文件,会覆盖之前写入的内容,最终仅保留最后一行结果 - 使用
csv.writer的writerow方法时,传入的字符串会被拆分为单个字符的列表,导致输出格式完全混乱 - 冗余变量
md和result的反复清空属于多余操作,逻辑可以简化
修正后的代码
# 直接处理纯文本,无需csv模块的writer组件 with open(r'C:\Desktop\A.txt', 'r', encoding='utf-8') as infile, \ open(r'C:\Desktop\B.txt', 'w', encoding='utf-8') as outfile: for line in infile: # 去除行尾换行符,按分号分割后过滤空字符串(适配末尾带分号的行) parts = [p.strip() for p in line.strip().split(';') if p] # 按每个字段占10字符右对齐的规则拼接成一行,添加换行符后写入 formatted_line = f"{parts[0].rjust(10)}{parts[1].rjust(10)}{parts[2].rjust(10)}\n" outfile.write(formatted_line)
代码说明
- 同时打开输入和输出文件,输出文件仅打开一次,避免循环覆盖
- 逐行处理输入内容,自动适配像
gh;jsk;kk;这类末尾带分号的行,过滤无效空元素 - 用f-string直接实现右对齐空格填充,输出纯文本内容,完全满足无分隔符、无多余符号的需求
- 运行后输出文件内容与你期望的格式完全一致:
a j kk gh jsk kk gsh kks jj
内容的提问来源于stack exchange,提问作者kolaton277
相关产品推荐
相关产品推荐

