2017-06-19 3 views
0

Dies könnte trivial sein, aber ich habe viel versucht und hat nicht funktioniert.
Ich habe folgende Stück Code:Python - Komma-Zeichen an eine Zeile in CSV-Datei anhängen

if a == 0 and b == c-1: 
    row.append(str(arrayElement[k])+"],") 

Die am .csv Datei gewünschte Ausgabe zu dem folgenden ähnlich sein sollten:

[1,1,2], 

dh: enthält I die letzte Spalte in der Reihe möchten die Zeichenfolge 2], aber ist es das, was ich erhalte:

[1,1,"2]," 

Wie ge t die Ausgabe im gewünschten Format?

Edit: Ich aus einer Binärdatei lese, und die endgültige Ausgabe wie folgt sein sollte:

[[1,1,2], 
[2,3,4], 
[5,6,7]] 

mir gelungen Schreiben [[, [ und ]], so die erste Zelle in der ersten Zeile enthält: [[1 , die erste Zelle in der 2. Reihe: [2, die letzte Zelle in der 2. Reihe 4], usw.

der vollständige Code ist folgende:

 k = 0 
     row = [] 
     for M in range (X): 
      for N in range(Y): 
       if N != Y: 
        k = k + 1      
        if M == 0 and N == 0: 
         row.append("[["+str(arrayElement[k-1])) 
        elif M == 0 and N == Y -1: 
         row.append(str(arrayElement[k-1])+"],") 
        elif M == X -1 and N == Y -1: 
         row.append(str(arrayElement[k-1])+"]]") 
        elif M > 0 and N == Y -1: 
         row.append(str(arrayElement[k-1])+"],") 
        elif M > 0 and N == 0:      
         row.append("["+str(arrayElement[k-1])) 
        else: 
         row.append(str(arrayElement[k-1])) 
      WeightsWriter.writerow(row) 
      row = [] 

Antwort

0

Versuchen Sie, das Komma nicht zum Array selbst hinzuzufügen, sondern fügen Sie das Komma hinzu, wenn Sie die Zeile zur CSV-Datei hinzufügen. Beispiel:

row = [1,2,3] 
csv.write(str(row)+",") # Writes [1, 2, 3], to CSV file 

Wenn Sie viele verschiedene Reihen haben und möchten, dass sie mit einem Komma verbinden Sie ",".join(rows) verwenden könnten die Zeilen mit einem Komma zu verbinden. Beispiel:

rows = [] 
rowa = [1,2,3] 
rows.append(rowa) 
rowb = [4,5,6] 
rows.append(rowb) 
",".join([str(_) for _ in rows]) # Outputs [1, 2, 3],[4, 5, 6] 

Hoffe, das hilft!

+0

Ich habe diese Lösung schon versucht, aber es machte die Ausgabe unordentlicher. BTW, verwende ich einen Befehl wie 'ParameterWriter.Writerow (Zeile)' – philippos

+0

Was meinst du mit der Ausgabe unordentlicher gemacht? Hat es wie gewünscht funktioniert? –

+0

leider nicht. Die Ausgabe war komplizierter mit viel mehr Kommata zwischen den Werten. – philippos

0

Die Anführungszeichen werden angezeigt, da CSV für Komma-getrennte Werte steht. Wenn es ein literales Komma enthalten muss, muss es angegeben werden.

Was Sie zu tun scheinen, ist nicht "ein Komma am Ende einer Zeile hinzufügen"; Du mischt die Abstraktionsniveaus hier. Ein Komma am Ende einer Zeile bedeutet, dass der letzte Wert in dieser Zeile leer ist. Sie versuchen, den CSV-generierenden Code zu erzwingen, etwas auf Textdateiebene auszuführen.

auf der rechten Abstraktionsebene Betrieb bedeutet eine leere Zeichenfolge zur Liste hinzufügen Sie versuchen zu sparen:

import csv 
import sys # for the sake of example 

writer = csv.writer(sys.stdout) 
writer.writerow([1, 2, 3]) # writes 1,2,3 
writer.writerow([1, 2, 3, '']) # writes 1,2,3, 

Jetzt gibt es ein Komma vor den leeren Wert, der am Ende sein geschieht der Linie.

Verwandte Themen