我正在尝试将列添加到csv文件中,该文件组合了来自其他两列的字符串。每当我尝试这个时,我要么得到一个只有新列的输出csv,要么输出包含所有原始数据而不是新列。
这是我到目前为止所做的:
with open(filename) as csvin:
readfile = csv.reader(csvin, delimiter=',')
with open(output, 'w') as csvout:
writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
for row in readfile:
result = [str(row[10]) + ' ' + str(row[11])]
writefile.writerow(result)
任何帮助都将不胜感激。
答案 0 :(得分:2)
没有输入要测试,但试试这个。您当前的方法不包括输入数据中已存在的每一行的现有数据。 extend
将获取代表每一行的列表,然后将另一项添加到该列表中......相当于添加一列。
import CSV
with open(filename) as csvin:
readfile = csv.reader(csvin, delimiter=',')
with open(output, 'w') as csvout:
writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
for row in readfile:
row.extend([str(row[10]) + ' ' + str(row[11])])
writefile.writerow(row)
答案 1 :(得分:0)
我认为glayne希望将第10列和第11列合并为一个。 在我的方法中,我专注于如何首先转换单行:
notify: true
经过测试以确保其有效,我可以继续替换所有行:
def transform_row(input_row):
output_row = input_row[:]
output_row[10:12] = [' '.join(output_row[10:12])]
return output_row
请注意,我使用with open('data.csv') as inf, open('out.csv', 'wb') as outf:
reader = csv.reader(inf)
writer = csv.writer(outf)
writer.writerows(transform_row(row) for row in reader)
方法在一个语句中写入多行。
答案 2 :(得分:0)
下面的代码段将每行中第10列和第11列中的字符串组合在一起,并将其添加到每行的末尾
import csv
input = 'test.csv'
output= 'output.csv'
with open(input, 'rb') as csvin:
readfile = csv.reader(csvin, delimiter=',')
with open(output, 'wb') as csvout:
writefile = csv.writer(csvout, delimiter=',', lineterminator='\n')
for row in readfile:
result = row + [row[10]+row[11]]
writefile.writerow(result)