Python 在两个csv文件之间执行列操作
我有两个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
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(…)
doc3.writerow(“{:我认为您需要对那里的数据进行更多的格式化。请用代码({})包装它。是的,谢谢。我正试图将其格式化为这样。但无法将问题格式化为这样this@hello_sm:阅读格式化帮助或单击“代码”按钮将当前选择格式化为代码。