Python写入长字符串到文件时避免换行的问题求助
解决numpy数组写入文件时自动换行的问题
我来帮你搞定这个问题!你遇到的情况是numpy默认的数组字符串格式化行为导致的:当数组转成字符串时,一旦元素数量或总字符长度达到阈值,numpy会自动插入换行符,这就导致你写入文件的数组被拆成了多行,给后续解析带来麻烦。
下面给你两种可行的解决方案,都能输出你想要的单行无换行数组:
方法1:使用numpy的array2string函数(推荐)
numpy提供了专门的函数来控制数组转字符串的格式,通过设置参数可以强制输出单行:
import numpy as np # 假设coords是你的10×2 numpy数组 with open('MD_traj.yml', 'a+', newline='') as outfile: outfile.write('# Output data of MD simulation\n') # 自定义数组转字符串的格式,确保单行输出 x_str = np.array2string( coords[:, 0], separator=' ', # 元素间用空格分隔 suppress_small=True, # 避免小数值用科学计数法 formatter={'float': '{:.8f}'.format} # 控制浮点数精度,和你期望的格式一致 ) outfile.write(f'x-coordinates: {x_str}\n') y_str = np.array2string( coords[:, 1], separator=' ', suppress_small=True, formatter={'float': '{:.8f}'.format} ) outfile.write(f'y-coordinates: {y_str}\n')
方法2:手动拼接字符串(更灵活)
如果你想完全自定义输出格式,可以手动遍历数组元素,把每个元素转成字符串后再拼接成数组形式:
with open('MD_traj.yml', 'a+', newline='') as outfile: outfile.write('# Output data of MD simulation\n') # 处理x坐标 x_vals = ['{:.8f}'.format(val) for val in coords[:, 0]] x_str = f'[ {" ".join(x_vals)} ]' outfile.write(f'x-coordinates: {x_str}\n') # 处理y坐标 y_vals = ['{:.8f}'.format(val) for val in coords[:, 1]] y_str = f'[ {" ".join(y_vals)} ]' outfile.write(f'y-coordinates: {y_str}\n')
这两种方法都能让你得到期望的单行数组输出,解决文件解析的问题。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

