Найти - Пользователи
Полная версия: Как объединить текстовые таблицы в один текстовый файл по столбцам?
Начало » Python для новичков » Как объединить текстовые таблицы в один текстовый файл по столбцам?
1 2
glsmen
Здравствуйте форумчане!
У меня есть несколько текстовых таблиц и некоторых из них необходимо объединить по столбцам. Помогите как это реализовать.
Суть заключается в следующем:
У меня есть f1.txt
ns1 6 -3 
ns2 6 -3 
ns3 7 -4 
ns4 8 -2 
ns5 8 -3 
ns6 7 -2 
ns7 6 -1 
и f2.txt. ++++++++++++
ns11 67 5 
ns21 67 -3 
ns31 77 21 
ns41 88 -2 
ns51 82 -3.5 
ns61 72 -2 
ns71 62 -1.35

После объединения должно получится
ns1 6 -3 ns11 67 5 
ns2 6 -3 ns21 67 -3 
ns3 7 -4 ns31 77 21
ns4 8 -2 ns41 88 -2 
ns5 8 -3 ns51 82 -3.5
ns6 7 -2 ns61 72 -2
ns7 6 -1 ns71 62 -1.35 

Спасибо!
ZerG
И в чем проблема?
Покажите когд и место где застряли? какую ошибку пишет?
glsmen
ZerG
И в чем проблема? Покажите когд и место где застряли? какую ошибку пишет?
Пытался просто объединить файлы, работает (код внизу!). Но добавляет 2ой файл в конец 1го файла. А как объединить столбца незнаю. Может есть другая команда, не подскажите?
Вот код
f1=open('f1.txt', 'r')
f2=open('f2.txt', 'r')
f1_out=[]
f2_out=[]
res=[]
f1_out=f1.read()
f2_out=f2.read()
res=f1_out+f2_out
print res
     
f1.close()
f2.close()
 
ZerG
если количество и порядок строк в файлах одинаковые то просто заполните поочередно данными.
# -*- coding: utf-8 -*-
l1 = [1, 2, 3]
l2 = [5, 6, 7]
res = []
for i in range(0, len(l1)):
    res.append((l1[i], l2[i]))
print(res)
glsmen
ZerG
если количество и порядок строк в файлах одинаковые то просто заполните поочередно данными.
В этом случае все смешивается
prg
l1 = []
l2 = []
with open('f1.txt') as f1:
    for x in f1:
        l1.append(x.rstrip())
with open('f2.txt') as f2:
    for y in f2:
        l2.append(y.rstrip())
for one, two in zip(l1, l2):
    print(one, '=>', two)
glsmen
Попробовал следующем образом:
#!/usr/bin/env python
# -- coding: utf-8 --
# ver.0
import os
import sys
#import subprocess
f1=open('f1.txt', 'r')
f2=open('f2.txt', 'r')
res1=[]
res2=[]
out=[]
for li1 in f1:
    res1.append(li1.rstrip())
    #print res1.all
    
for li2 in f2:
    res2.append(li2.rstrip())
    #print res2.all
out=map(None,res1, res2)
print out
     
f1.close()
f2.close()
fw=open('test_c1.txt', 'w')
fw.write(out)
fw.close() 

Но, сохранить в файл не получается. Выдает следующую ошибку
sh-4.2$ ./my_2.py
('ns1 6 -3', ‘ns11 67 5’), ('ns2 6 -3', ‘ns21 67 -3’), ('ns3 7 -4', ‘ns31 77 21’), ('ns4 8 -2', ‘ns41 88 -2’), ('ns5 8 -3', ‘ns51 82 -3.5’), ('ns6 7 -2', ‘ns61 72 -2’), ('ns7 6 -1', ‘ns71 62 -1.35’)
Traceback (most recent call last):
File “./my_2.py”, line 28, in <module>
fw.write(out)
TypeError: expected a character buffer object
sh-4.2$
glsmen
prg
Ваш метод тоже использовал. Работает, спасибо.
Но, не получается сохранить! Что предложите?
prg
l1 = []
l2 = []
with open('f1.txt') as f1:
    for x in f1:
        l1.append(x.rstrip())
with open('f2.txt') as f2:
    for y in f2:
        l2.append(y)
with open('test_c1.txt', 'w') as fw:
    for one, two in zip(l1, l2):
        fw.write('{} {}'.format(one, two))
glsmen
prg
Огромное спасибо! Заработало!
Единственно, что добавил ‘\n’ в формат write.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB