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
相关产品推荐
相关产品推荐

