2016-11-10 1 views
1

J'essaie de copier le contenu des trois premières colonnes d'un fichier txt dans les trois premières colonnes d'un fichier Excel.Copier une colonne d'un fichier txt dans une colonne du fichier Excel, Python

Voici mon code:

import XlsxWriter 
worksheet1 = workbook.add_worksheet() 
worksheet1.write('A1', 'Time', bold);worksheet1.write('B1', 'User Value', bold);worksheet1.write('C1','Address', bold);worksheet1.write('D1', 'Serial Number', bold); 
items = os.listdir(directory) 
for FILE in items: 
    if FILE.endswith('file.txt'): 
      FileSelection = directory+'/' + FILE 
      Array1 = [] 
      with open(FileSelection, 'r') as f: 
        for line in f: 
         valuesList = line.split('\t') 
         #print valuesList 
         Array1.append(valuesList) 

     for j in range(len(Array1)): 
      if j == 0: 
       continue 
      else: 
       print Array1[j][0] 
       worksheet1.write('A2:D2', Array1[j][0]) #I want to say, copy the columns A to D but start from the second raw 

Cependant il copie tout le tableau de txt à la première colonne du fichier Excel!

+0

Que voulez-vous dire par "colonne" d'un fichier txt? Les colonnes sont-elles séparées par des tabulations? – brianpck

+0

Oui, ils sont sous forme de tableau (chaque colonne est séparée par un onglet) – Ssein

+0

Ecrivez-vous un fichier CSV (comme dans votre titre) ou un fichier Excel (comme dans votre code)? – brianpck

Répondre

1

On dirait que le 'fichier texte' que vous voulez est en réalité un csv, seulement avec un délimiteur différent (Ceci est un peu une convention déroutante). Vous pouvez utiliser le module csv pour spécifier:

>>> import csv 
>>> with open('your file.txt', 'rb') as csvfile: 
...  reader = csv.reader(csvfile, delimiter='\t') 
...  for row in reader: 
...   print ', '.join(row) 

Il y a un même csv module d'écriture, ou voulez-vous réellement un fichier Excel?

J'ai aussi remarqué dans votre code ValuesList devrait peut-être tronquer les 3 premières colonnes, comme c'est-ce que vous semblez vouloir ...

C'est probablement la raison pour laquelle vous obtenez tous le fichier original. Donc, changer

valuesList = line.split('\t') 

à

valuesList = line.split('\t')[:3]