我對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