Запишите данные в excel из 2 файлов с помощью Python

У меня есть два файла с данными diff. Я хочу написать это, чтобы преуспеть, используя python. Я дал определенные 4 столбца Заголовки.

Ниже приведен фрагмент. Я хочу, чтобы оба объединялись, чтобы мне не приходилось определять строку и столбец два раза. В файлах ABC.txt и LMN.txt есть данные для записи в xlsx.

    row=1
    col=0
    with open('ABC.txt','r') as f:
        for K in f:
            worksheet.write(row,col,K)
            row+=1
    row=1
    col=0
    with open('LMN.txt','r') as f:
        for X in f:
            worksheet.write_url(row  , col+1,  X)
            row += 1

         workbook.close()

person RonyA    schedule 24.04.2016    source источник


Ответы (2)


Вам действительно следует рассмотреть возможность использования такого пакета, как Pandas. Этот тип вещей смехотворно прост в пандах:

import pandas as pd

df = pd.DataFrame(columns=['col1', 'col2'])

df['col1'] = ['hello1', 'world1']
df['col2'] = ['hello2', 'world2']
print df

df.to_excel('output.xls', index=False)

Выход:

     col1    col2
0  hello1  hello2
1  world1  world2

Обратите внимание, что столбцы можно передавать как массивы, поэтому вы можете создавать свои массивы по своему усмотрению, а затем помещать их в столбцы.

Изменить:

Если вы не можете использовать Pandas (или не будете по какой-то причине), вы можете использовать низкотехнологичное решение, такое как архивирование. Предполагая, что вы можете подготовить все свои столбцы, вы можете использовать старое доброе сжатие, чтобы преобразовать их в строки:

col1 = ['hello1', 'world1', 'again1']
col2 = ['hello2', 'world2', 'again2']
col3 = ['hello3', 'world3', 'again3']

out = ''
for row in zip(col1, col2, col3):
    out += ','.join(row) + '\n'
print out

выход:

hello1,hello2,hello3
world1,world2,world3
again1,again2,again3

Затем вы можете записать out в файл, скажем, с расширением csv, который читается Excel.

person Shovalt    schedule 24.04.2016
comment
Выглядит интересно. Но похоже, что я не могу использовать Panda в соответствии с моим кодом и для широкой цели. Но обязательно попробую. - person RonyA; 24.04.2016
comment
Я добавил еще одно решение, не используя Pandas, но имейте в виду, что для этого вам нужно иметь все данные в памяти. - person Shovalt; 24.04.2016

Если файлы слишком большие, вы можете сначала прочитать их, объединить структуры вместе, а затем записать их в одном цикле:

with open('ABC.txt', 'r') as f:
   cola = list(f)

with open('LMN.txt', 'r') as f:
   colb = list(f)

rows = zip(cola, colb)

for idx, row in enumerate(rows):
    worksheet.write(idx, 0, row[0])
    worksheet.write_url(idx, 1, row[1])
person Burhan Khalid    schedule 24.04.2016
comment
На самом деле в первом файле уже есть данные. Для второго я должен создать его, и в то же время мой вывод кода (multilpe) будет записан, и, наконец, данные первого файла и данные, сгенерированные во втором, будут объединены в столбцы и строки в файле xlsx, который был созданный 2-м процессом. Идея твоя тоже хороша. Попробую сегодня. - person RonyA; 24.04.2016