使用python

时间:2017-01-20 09:33:15

标签: python csv join row concatenation

我是pyhton的新手,我从2天开始坚持这个话题,试图找到一个基本的答案但是不能,所以最后我决定提出我的问题。

我想连接我的csv文件的前两行的值(如果可能的话,在内置模块的帮助下)。 任何形式的帮助将不胜感激。 Thnx提前

下面是我没有标题的示例csv文件:

1,Suraj,Bangalore

2,Ahuja,Karnataka

3,Rishabh,Bangalore

期望的输出:

1 2,Suraj Ahuja,Bangalore Karnataka

3,Rishabh,Bangalore

3 个答案:

答案 0 :(得分:2)

只需创建一个csv.reader对象(和一个csv.writer对象)。然后在前两行使用next()并将它们压缩在一起(使用列表理解)以匹配项目。

然后正常处理文件的其余部分。

import csv

with open("file.csv") as fr, open("output.csv","w",newline='') as fw:
    cr=csv.reader(fr)
    cw=csv.writer(fw)
    title_row = [" ".join(z) for z in zip(next(cr),next(cr))]
    cw.writerow(title_row)
    # dump the rest as-is
    cw.writerows(rows)

(如果文件当然只有1行,你会得到一个例外)

答案 1 :(得分:1)

您可以使用zip()作为前两行,如下所示:

with open('f.csv') as f:
    lines = f.readlines()
    res = ""
    for i, j in zip(lines[0].strip().split(','), lines[1].strip().split(',')):
        res += "{} {},".format(i, j)
    print(res.rstrip(','))
    for line in lines[2:]:
        print(line)

<强>输出:

1 2,Suraj Ahuja,Bangalore Karnataka
3,Rishabh,Bangalore

答案 2 :(得分:1)

with open('file2', 'r') as f, open('file2_new', 'w') as f2:
    lines = [a.split(',') for a in f.read().splitlines() if a.strip()]
    newl2 = [[' '.join(x) for x in zip(lines[0], lines[1])]] + lines[2:]
    for a in newl2:
        f2.write(', '.join(a)+'\n')