在Excel中,我可以使用这样的东西:
=CONCATENATE(A1," ",B1)
(User洪水填充的这向下的电子表格,然后简单地删除A和B,最后你移动结果到A)
“最终结果"应将A和B列合并为一列(A),并以一个空格分隔。
在Python中,这是我迄今为止所拥有的:
import csv
with open("test.csv","rb") as source:
rdr= csv.reader( source )
with open("result","wb") as result:
wtr= csv.writer( result )
for r in rdr:
print("Adding merged COL1/COL2 into one column for every row...")
wtr.writerow(r+[r[0] + ' ' + r[1]])
print("Deleting COL1/COL2 columns from every row...")
del r[0]
del r[0]
wtr.writerow( r )
result.close();
虽然上面的代码正确地合并了两列并在文件的末尾追加了一列,但一旦完成,它并没有正确地删除前两行,我相信这是因为wtr.writerow已经被调用了。此外,我不确定如何将列移到左边(回到A),因为它总是附加到末尾。
2条答案
按热度按时间nwsw7zdq1#
所以你从csv中阅读(或写入)的每一行都是一个列表,对吗?所以再做一两步,创建你想要的列表,然后写下来。
例如
另外,我怀疑你需要从CSV读/写二进制('rb','wb')。
uqdfh47h2#
你在循环中调用了
writerow
两次。我不认为你想这样-写合并的列,然后其他单独?号您可以简单地将合并的列连接到行的 * 开始 *,并 * 切片 * 旧行:
您不再需要
del
语句,只需调用writerow
即可插入修改后的 row:另外,请注意,您可以在
with
语句后放置多个表达式,就像我上面所做的那样。最后,您不需要手动关闭文件-
result.close()
。with
上下文已经 * 管理 * 了。