我对python真的很陌生,现在我在学生项目上工作时遇到了一些问题。基本上我尝试从列中格式化的文本文件中读取数据。我将数据存储在列表中,对数据进行排序和处理,然后再将它们写入文件。我的问题是将书写的数据排列在适当的列中。我发现了一些方法,如如何正确地将列表的输出格式化为文本文件?
“%I,%F,%E” %(1000,1000,1000)
,但我不知道有多少列会有。所以我想知道是否有办法将所有列设置为固定宽度。
这是输入数据的样子:
2 232.248E-09 74.6825 2.5 5.00008 499.482
5 10. 74.6825 2.5 -16.4304 -12.3
这是我如何将数据存储在表的列表:
filename = getInput('MyPath', workdir)
lines = []
f = open(filename, 'r')
while 1:
line = f.readline()
if line == '':
break
splitted = line.split()
lines.append(splitted)
f.close()
要写入我第一次把所有该行的数据列表中的元素列表成一个字符串,元素之间有一个空闲的固定空间。但是,我需要一个固定的总空间,包括元素。但是我也不知道文件中的列数。
for k in xrange(len(lines)):
stringlist=""
for i in lines[k]:
stringlist = stringlist+str(i)+' '
lines[k] = stringlist+'\n'
f = open(workdir2, 'w')
for i in range(len(lines)):
f.write(lines[i])
f.close()
此代码基本上工作,但可悲的是输出格式不正确。
非常感谢您提前在这个问题上的任何帮助!
非常感谢您的快速回答!在你的帮助下,我设法写了一个小功能,它现在正是我所需要的: def WriteOutput(matrix): workdir2 = os.getcwd()+'/ abaqusc。rpt' #将宽度为10个空格的每列(len(a))格式化为宽度为 width = [20] * len(matrix [0]) with open(workdir2,'w')as f: for j in xrange(len(matrix)): f.write(''。join('%* s'%i for zip in(width,matrix [j]))+'\ n') – 2013-04-04 11:34:30