Ich habe eine Datei sucht auf diese Weise:Datensortierung, die Kombination von zwei Linien
;1;108/1;4, 109
;1;51;4, 5
;2;109/2;4, 5
;2;108/2;4, 109
;3;108/2;4, 109
;3;51;4, 5
;4;109/2;4, 5
;4;51;4, 5
;5;109/2;4, 5
;5;40/6;5, 6, 7
wo
;id1;id2;position_on_shelf_id2
;id1;id3;position_on_shelf_id3
als Ergebnis, ich will bekommen: id1, id2-ıd3; x wobei x sowohl gemeinsame Lagerpositionen für ID2 und iD3 sind, sollte es so
1;108/1-51;4
2;109/2-108/2;4
3;108/2-51;4
4;109/2-51;4, 5
5;109/2-40/6;5
mein Skript Arbeit suchen Bis zu dem Moment, wo ich allgemeine Regalpositionen eingeben muss. Ich habe versucht mit .intersection, aber es funktioniert nicht richtig, wenn ich Positionen habe bestehend aus Doppel-Zeichen (pos: 144-Ergebnis: 14; pos: 551, Ergebnis: 51; pos: 2222-Ergebnis: 2 ie)
result = id2_chars.intersection(id3_chars)
irgendwelche Fix für die Kreuzung? oder vielleicht eine bessere Methode für Sie?
Code bisher:
Part1 - fusioniert jede zweite Zeile zusammen
exp = open('output.txt', 'w')
with open("dane.txt") as f:
content = f.readlines()
strng = ""
for i in range(1,len(content)+1):
strng += content[i-1].strip()
if i % 2 == 0:
exp.writelines(strng + '\n')
strng = ""
exp.close()
Part2 - Kreuzung: exp = open ('output2.txt', 'w')
imp = open('output.txt')
for line in imp:
none, lp1, dz1, poz1, lp2, dz2, poz2 = line.split(';')
s1 = poz1.lower()
s2 = poz2.lower()
s1_chars = set(s1)
s2_chars = set(s2)
result = s1_chars.intersection(s2_chars)
result = str(result)
exp.writelines(lp1 + ';' + dz1 + '-' + dz2 + ';' + result + '\n')
exp.close()
** Ich habe das Ergebnis für meine Bedürfnisse noch nicht gefiltert (es ist in "Liste" Form), aber es wird kein Problem sein, sobald ich das richtige Ergebnis der Kreuzung
bekomme
Bitte geben Sie den Code, den Sie bisher haben. – perigon
Code hinzugefügt (einige Buchstaben) – krizz