Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在两个csv文件之间执行列操作_Python_Csv - Fatal编程技术网

Python 在两个csv文件之间执行列操作

Python 在两个csv文件之间执行列操作,python,csv,Python,Csv,我有两个csv文件,如下所示: listname a b diff(b-a) full 30 32 2 part 10 15 5 文件1: # full part 1 30 10 full part 1 30 10 文件2: # full part 1 32 15 full part 1 32 15 我想执行列操作并按如下方式输出: listname

我有两个csv文件,如下所示:

listname        a        b    diff(b-a)
full            30       32    2
part            10       15    5
文件1:

# full part
1 30   10
full part
1 30 10
文件2:

# full part
1 32   15
full part
1 32 15
我想执行列操作并按如下方式输出:

listname        a        b    diff(b-a)
full            30       32    2
part            10       15    5

在python中如何做到这一点?

您的问题很难理解,但我可以猜测您的意思:

csvdiff.py:

import csv

with open('file1') as file1, open('file2') as file2, open('output', 'w') as output:
    next(file1), next(file2) # skip the header lines
    c1, c2 = csv.reader(file1, delimiter=' '), csv.reader(file2, delimiter=' ')
    c3 = csv.writer(output, delimiter=' ')
    c3.writerow(['listname', 'a', 'b', 'diff(b-a)'])
    for (row1, row2) in zip(c1, c2):
        c3.writerow(('full', row1[1], row2[1], int(row2[1])-int(row1[1])))
        c3.writerow(('part', row1[2], row2[2], int(row2[2])-int(row1[2])))
文件1:

# full part
1 30   10
full part
1 30 10
文件2:

# full part
1 32   15
full part
1 32 15
输出:

listname a b diff(b-a)
full 30 32 2
part 10 15 5
这就是你想要的吗

请注意,我的测试输入中的列没有“对齐”。如果原始数据已对齐,则可能是使用了制表符,在这种情况下,您需要使用
delimiter='\t'
而不是
delimiter='
。如果它们确实有不同数量的空格(如您最初粘贴到问题中的空格),您希望保留
分隔符=''
,并添加
skipinitialspace=True
。有关所有可用格式选项的详细信息,请参阅


如果希望输出对齐…最简单的方法是使用字符串格式,在打印值之前将其强制为固定宽度。例如,不要使用
c3.writerow(…)
do
c3.writerow(“{:我认为您需要对那里的数据进行更多的格式化。请用代码({})包装它。是的,谢谢。我正试图将其格式化为这样。但无法将问题格式化为这样this@hello_sm:阅读格式化帮助或单击“代码”按钮将当前选择格式化为代码。