2016-07-23 7 views
0

Ich möchte ein Python-Skript schreiben, das von einem CSV liest. Der CSV besteht aus 2 Spalten. Ich möchte, dass das Skript Zeile für Zeile durch die erste Spalte liest und den entsprechenden Wert in der zweiten Zeile findet. Wenn es den Wert in der zweiten Zeile findet, möchte ich einen Wert in eine dritte Spalte eingeben.Python csv Suchskript

example of output

Jede mögliche Hilfe bei diesem sehr geschätzt werden würde, und ich hoffe, dass mein Ziel ist klar. Entschuldigung im Voraus, wenn es zu vage ist.

+3

Willkommen bei StackOverflow. Die Idee hier ist nicht, die Leute dazu zu bringen, den Code für dich zu schreiben, sondern um Hilfe zu bekommen, wo du hängen bleibst. Erzähle uns, was du schon versucht hast und wo du auf Probleme gestoßen bist. – acrosman

+0

Sie können Pandas verwenden, um CSV als Tabelle zu lesen. Dann benutze group by mit String concatanation wie hier: http://stackoverflow.com/questions/17841149/pandas-groupby-how-to-get-a-union-of-strings und verbinde dann die ursprüngliche Tabelle und die neue Tabelle. Wenn Sie interessiert sind, kann ich einen Code als Antwort schreiben. –

Antwort

0

dieses Skript lesen test.csv Datei und analysieren es einen Schreibvorgang auf OUTPUT.txt

f = open("test.csv","r") 
d={} 
s={} 
for line in f: 
     l=line.split(",") 
     if not l[0] in d: 
       d[l[0]]=l[1].rstrip() 
       s[l[0]]='' 
     else: 
       s[l[0]]+=str(";")+str(l[1].rstrip()) 

w=open("OUTPUT.txt","w") 
w.write("%-10s %-10s %-10s\r\n" % ("ID","PARENTID","Atachment")) 
for i in d.keys(): 
     w.write("%-10s %-10s %-10s\r\n" % (i,d[i],s[i])) 

f.close() 
w.close() 

Beispiel:

Eingang:

1,123 
2,456 
1,333 
3, 
1,asas 
1,333 
000001,sasa 
1,ss 
1023265,333 
0221212, 
000001,sasa2 
000001,sas4 

OUTPUT:

ID   PARENTID Atachment 
000001  sasa  ;sasa2;sas4 
1023265 333     
1   123  ;333;asas;333;ss 
3        
2   456     
0221212 
+0

danke @Babyy, könntest du bitte die Wenn und Nicht Teile erklären. Ich bin unklar, was genau die d und s bedeuten und was genau [l [0]] + = str (";") + str (l [1] .rstrip()) "tut. – sharpie