Python: эффективный способ объединения 2 файлов csv с разными разделителями - PullRequest
0 голосов
/ 06 августа 2020

Я написал следующий код для объединения CSV-файла, разделенного табуляцией, с другим CSV-файлом, разделенным запятыми (который также имеет заголовок). Конечный результат представляет собой CSV-файл с разделением табуляцией без заголовка.

    with open('train.csv',"r") as infile1, open("test.csv", "r") as infile2, open('final.csv',"a") as outfile:
        reader1 = csv.reader(infile1, delimiter='\t')
        reader2 = csv.reader(infile2)
        next(reader2, None)  # skip the headers
        
        writer = csv.writer(outfile, delimiter='\t')
        for row in reader1:
        writer.writerow(row)
        for row in reader2:
        writer.writerow(row)

Ниже приведены примеры файлов для train.csv и test.csv соответственно

main-captions   MSRvid  2012    0001    5.000   A plane.    is taking off.
main-captions   MSRvid  2012    0004    3.800   A man.  is playing a flute.

Domain,Task Name,Year,Index,Score,Sentence 1,Sentence 2
Exp,Exp,2020,1,5,product,damage
Exp,Exp,2020,2,5,product,broken

Приведенный выше код работает нормально.

Но есть ли более короткий способ добиться этого? Скажем, это использует какие-либо новые пакеты или, возможно, функции в модуле csv?

1 Ответ

2 голосов
/ 06 августа 2020

Ваш код уже действует. Но его можно сократить, используя writer.writerows

    from itertools import chain
    writer.writerows(chain(reader1, reader2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...