Ich habe eine Datei Text-getrennte Datei, die ich versuche, binäre Kombination pro Zeile zu machen und die Anzahl der Zeile zu jedem Paar geben.Zeichenfolge Manipulation und Hinzufügen von Werten basierend auf Zeile, die sie sind
Hier ist ein Beispiel (Sie können es auch hier herunterladen können, wenn Sie https://gist.github.com/anonymous/4107418c63b88c6da44281a8ae7a321f wollen)
"A,B "
"AFD,DNGS,SGDH "
"NHYG,QHD,lkd,uyete"
"AFD,TTT"
Ich will es haben wie diese
A_1 B_1
AFD_2 DNGS_2
AFD_2 SGDH_2
DNGS_2 SGDH_2
NHYG_3 QHD_3
NHYG_3 lkd_3
NHYG_3 uyete_3
QHD_3 lkd_3
QHD_3 uyete_3
lkd_3 uyete_3
AFD_4 TTT_4
Es bedeutet, A_1 und B_1 kommen aus die erste Reihe AFD_2 & DNGS_2 kommen aus der zweiten Reihe, etc usw.
Ich habe versucht, es zu tun, aber ich kann nicht Figur e it out
#!/usr/bin/python
import itertools
# make my output
out = {}
# give a name to my data
file_name = 'data.txt'
# read all the lines
for n, line in enumerate(open(file_name).readlines()):
# split each line by comma
item1 = line.split('\t')
# split each stirg from another one by a comma
item2 = item1.split(',')
# iterate over all combinations of 2 strings
for i in itertools.combinations(item2,2):
# save the data into out
out.write('\t'.join(i))
Ausgang Antwort 1
"A_1, B "_1
"AFD_2, DNGS_2
"AFD_2, SGDH "_2
DNGS_2, SGDH "_2
"NHYG_3, QHD_3
"NHYG_3, lkd_3
"NHYG_3, uyete"_3
QHD_3, lkd_3
QHD_3, uyete"_3
lkd_3, uyete"_3
"AFD_4, TTT"_4
Antwort 2
"A_1 B "_1
"AFD_2 DNGS_2
"AFD_2 SGDH "_2
DNGS_2 SGDH "_2
"NHYG_3 QHD_3
"NHYG_3 lkd_3
"NHYG_3 uyete"_3
QHD_3 lkd_3
QHD_3 uyete"_3
lkd_3 uyete"_3
"AFD_4 TTT"_4
viel Verwirrung hier. Erstens, warum die Aufteilung auf Tabs? Wo erwarten Sie Tabs in Ihrer Eingabedatei? Sie scheinen auch zu versuchen, in ein Wörterbuch zu schreiben. Wollten Sie eine Ausgabedatei haben? –
@Paul Rooney Sorry für Verwirrung. Ich versuche, Zeilen voneinander zu trennen und deshalb benutze ich den Tab, vielleicht irre ich mich? Ich möchte nur die Ausgabe schreiben, ich werde das über – nik
ändern Die Zeilen sind durch Newline getrennt, d. H. '\ N'. Deine 'Splitlines' Funktion sollte dafür sorgen. –