2016-05-06 13 views
1

Ich versuche, zwei Textdateien zusammen zu kombinieren. Die erste Datei hat zwei Spalten und die zweite Datei hat 5 Spalten. Hier ist ein Beispiel dafür, wie die Dateien wie folgt aussehen:Kombinieren von Spalten aus zwei verschiedenen Textdateien in Python

file1.txt

333333 1 
423232 1 
244311 2 
333333 2 
and so on... 

file2.txt

1 4 0 5 32 
3 2 3 32 23 
3 4 4 2 2 
and so on ... 

Beide Dateien haben die gleiche Anzahl von Zeilen. Ich möchte mit file2.txt kombinieren file1.txt ein neues file3.txt zu erstellen, die von der Form:

file3.txt

333333 1 1 4 0 5 32 
423232 1 3 2 3 32 23  
244311 2 3 4 4 2 2 
and so on 

ich diesen Code schrieb, die file1.txt und file2 übergeht. txt zusammen. Was ich jedoch bekomme, ist eine Datei, die den Inhalt von file2.txt am Ende von file1.txt hinzufügt, was nicht das ist, was ich will. Ich bekomme so etwas wie dieses:

333333 1 
423232 1 
244311 2 
333333 2 
1 4 0 5 32 
3 2 3 32 23 
3 4 4 2 2 

Hier ist mein Code:

filenames =['file1.txt','file2.txt'] 
with open('file3.txt', 'w') as outfile: 
    for x in filenames: 
     with open(x) as infile: 
       for line in infile: 
        outfile.write(line) 

Wie kann ich diesen Code zu beheben, so dass ich eine Datei wie file3.txt erhalten, das heißt, fügen Sie die Zeilen von file2 .txt zu entsprechenden Zeilen von file1.txt? Irgendwelche Vorschläge/Hilfe werden geschätzt. Vielen Dank!

+1

Wenn Sie Unix wie System haben, versuchen Sie 'Paste -d '' file1.txt file2.txt> file3.txt' – Sundeep

Antwort

4

Sie können dies versuchen:

In Python 3:

with open('file3.txt', 'w') as file3: 
    with open('file1.txt', 'r') as file1: 
     with open('file2.txt', 'r') as file2: 
      for line1, line2 in zip(file1, file2): 
       print(line1.strip(), line2.strip(), file=file3) 

Wenn Sie mehr als eine Datei behandelt werden, können Sie den Code wie verallgemeinern kann:

filenames = ['file1.txt', 'file2.txt', ...] 
with open('output.txt', 'w') as writer: 
    readers = [open(filename) for filename in filenames] 
    for lines in zip(*readers): 
     print(' '.join([line.strip() for line in lines]), file=writer) 

In Python 2:

with open('file3.txt', 'w') as file3: 
    with open('file1.txt', 'r') as file1: 
     with open('file2.txt', 'r') as file2: 
      for line1, line2 in zip(file1, file2): 
       print >>file3, line1.strip(), line2.strip() 

Hoffe, es ist hilfreich!

+0

Ich bekomme den folgenden Fehler: print (line1.strip(), line2.strip(), Datei = file3) ^ SyntaxError: ungültige Syntax –

+0

Wenn Sie Python2 verwenden, verwenden Sie bitte den unteren, um es zu versuchen. – dokelung

+0

Vielen Dank! Ich hätte angeben sollen, dass ich Python 2 verwende. –

Verwandte Themen