2017-02-19 41 views
0

我有一個CSV文件,我想將它轉換爲基於第一列這是ID的文本文件。然後每個文件包含多個列。例如獲取多個colums到文本文件

file.csv 
id val1 val 2 val3 
1 50 52 60 
2 45 84 96 

等 這裏是我的代碼:

dir_name = '/Users/user/My Documents/test/' 
     with io.open('file1.csv', 'rt',encoding='utf8') as f: 
     reader = csv.reader(f, delimiter=',') 
     next(reader) 
     xx = [] 
     for row in reader: 
     with open(os.path.join(dir_name, row[0] + ".txt"),'a') as f2: 
      xx = row[1:2] 
      f2.write(xx +"\n") 

所以它應該是:

1.text 
50 52 60 
2.text 
45 84 96 

但它只是沒有內容創建的文件。 任何人都可以幫助我嗎?在此先感謝

回答

0

有幾個問題:

  1. 它實際上是一個空格分隔值的文件,而不是一個逗號分隔值文件。所以,你必須從,改變分隔符。此外,空白區會重複出現,因此您可以將附加標誌傳遞給csv模塊。

  2. 一些funkiness與數組索引和轉換爲字符串。

這個程序符合您的要求:

#!/usr/bin/python 

import io 
import csv 
import os 

dir_name = './' 
with io.open('input.csv', 'rt',encoding='utf8') as f: 
    reader = csv.reader(f, skipinitialspace=True, delimiter=' ') 
    next(reader) 
    xx = [] 
    for row in reader: 
     filename = os.path.join(dir_name, row[0]) 
     with open(filename + ".txt", 'a') as f2: 
      xx = row[1:] 
      f2.write(" ".join(xx) +"\n")