2012-11-30 70 views
1

我是新的python,我需要一些幫助。我製作了一個python腳本,它從文件中取出兩列並將它們複製到一個「新文件」中。但是,我現在需要將列添加到「新文件」。我需要在側面添加列,而不是底部。我的腳本將它們添加到底部。有人建議使用CSV,我讀過它,但我無法以它將新列添加到前一列的方式。任何幫助,高度讚賞。Python的CSV模塊,添加列到一邊,而不是底部

這裏是我寫的代碼:

import sys 
import re 

filetoread = sys.argv[1] 
filetowrite = sys.argv[2] 

newfile = str(filetowrite) + ".txt" 

openold = open(filetoread,"r") 
opennew = open(newfile,"a") 

rline = openold.readlines() 

number = int(len(rline)) 
start = 0 

for i in range (len(rline)) : 
    if "2theta" in rline[i] : 
     start = i 

for line in rline[start + 1 : number] : 
    words = line.split() 
    word1 = words[1] 
    word2 = words[2] 
    opennew.write (word1 + " " + word2 + "\n") 

openold.close() 
opennew.close() 

這裏是第二個代碼我寫的,使用CSV:

import sys 
import re 
import csv 

filetoread = sys.argv[1] 
filetowrite = sys.argv[2] 

newfile = str(filetowrite) + ".txt" 

openold = open(filetoread,"r") 

rline = openold.readlines() 

number = int(len(rline)) 
start = 0 

for i in range (len(rline)) : 
    if "2theta" in rline[i] : 
     start = i 

words1 = [] 
words2 = [] 

for line in rline[start + 1 : number] : 
    words = line.split() 
    word1 = words[1] 
    word2 = words[2] 
    words1.append([word1]) 
    words2.append([word2]) 

with open(newfile, 'wb') as file: 
    writer = csv.writer(file, delimiter= "\n") 
    writer.writerow(words1) 
    writer.writerow(words2) 

這些輸入文件的一些樣品:

我的第一個腳本「幾乎」很棒,除了它將新列寫入底部,我需要它們在前一列的旁邊。

回答

1

使用writerow的正確方法是給它一個包含所有列的數據的單個列表。

words.append(word1) 
words.append(word2) 
writer.writerow(words) 
+0

我改變了你建議的話,但仍然不起作用。我只需要添加一對新的列,將其添加到已經在(輸出)文件中的列的一側。我被這個嚴重迷失了。 – Justme

+0

@henrymartinez,因爲你的原始代碼似乎沒有試圖添加任何列,我不知道你的誤解在哪裏。 –

+0

感謝馬克的回覆。我是新的python,很可能我做的不正確。我的第一個代碼從包含許多列的文件(參見頂部輸入文件的示例)獲取到列中,然後將它們複製到「新文件」中。我只是希望當我在同一個「新文件」中複製一組新的列時,這些列將被添加到前一列的旁邊,而不是在底部。任何建議我應該如何寫我的代碼是高度讚賞。最好的祝福。 – Justme

相關問題