You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取txt提取值追加写入时如何添加空格或换行分隔

问题原因

Python文件对象的writelines()方法不会给传入的字符串列表自动添加分隔符,只会把列表元素按顺序直接拼接写入,因此会出现所有数值连成一串的问题。
另外原代码存在两个可优化点:

  • 用split(" ")按单个空格分割,遇到多空格、行尾带换行符的情况容易读入无效内容,直接用无参数的split()可以自动匹配任意空白字符,兼容性更好
  • 导入的numpy库全程未使用,可以直接删除,减少冗余加载
实现方案

根据需要选择两种写入格式即可:

  • 空格分隔:所有同列值在同一行,值之间用空格隔开
  • 逐行存储:每个值单独占一行

修正后可运行代码

x = []
y = []

# 读取原始数据,with语句会自动关闭文件,无需手动调用close()
with open('IV.txt', 'r') as f:
    for line in f:
        # 跳过空行,避免分割后索引报错
        if not line.strip():
            continue
        x_val, y_val = line.split()
        x.append(x_val)
        y.append(y_val)

# === 以下两种写入方式二选一即可 ===
# 方式1:空格分隔写入
with open('xdata.txt', 'a') as f1:
    # 用空格拼接所有x值,末尾加换行和后续追加内容做分隔
    f1.write(' '.join(x) + '\n')
with open('ydata.txt', 'a') as f2:
    f2.write(' '.join(y) + '\n')

# 方式2:每个值单独占一行写入
# with open('xdata.txt', 'a') as f1:
#     f1.write('\n'.join(x) + '\n')
# with open('ydata.txt', 'a') as f2:
#     f2.write('\n'.join(y) + '\n')

如果数据量特别大、不想一次性拼接生成大字符串,也可以遍历列表逐个写入,每个元素写入后主动添加分隔符,逐行写的示例逻辑如下,效果和join写法完全一致:

with open('xdata.txt', 'a') as f1:
    for val in x:
        f1.write(f"{val}\n")

内容的提问来源于stack exchange,提问作者nivetha thirugnanasambandan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 03:12:23