有一个名为'data.csv'的csv文件,格式如下:
test1,test2,test3
1,2,3
4,5,6
7,8,9
给定格式['test4',4,7,10]的列表,如何创建一个新的csv文件'adjusted.csv',其中包含来自data.csv的所有数据和添加的列,如下所示:< / p>
test1,test2,test3, test4
1,2,3,4
4,5,6,7
7,8,9,10
答案 0 :(得分:1)
读取
中的行with open('data.csv', 'r') as fi:
lines = [[i.strip() for i in line.strip().split(',')] \
for line in fi.readlines()]
col = ['test4', 4, 7, 10]
将每一行与col
的相应元素连接起来。使用enumerate来帮助跟踪要使用的列表索引。
new_lines = [line + [str(col[i])] for i, line in enumerate(lines)]
输出到文件
with open('adjusted.csv', 'w') as fo:
for line in new_lines:
fo.write(','.join(line) + '\n')
答案 1 :(得分:1)
我只是将csv视为原始文本。在每一行中加载,剥离换行符,追加新条目,然后将换行符放回。 仅当test4中的条目与data.csv中的行的顺序保持一致时才有效。
如果需要将test4添加到基于满足某些条件的行中,那将会改变很多事情。在这种情况下,您可能希望将两者都转换为Pandas数据帧,然后在所需条件下执行适当的合并。
test4 = ['test4', 4, 7, 10]
with open(data.csv, 'r') as ifile
with open(adjusted.csv, 'w') as ofile:
for line, new in zip(ifile, test4):
new_line = line.rstrip('\n') + ',' + str(new) + '\n'
ofile.write(new_line)
您还可以将前两行压缩为:
with open(data.csv, 'r') as ifile, open(adjusted.csv, 'w') as ofile:
做任何更清楚的阅读。
答案 2 :(得分:0)
由于您使用的是csv文件,请使用readers
writers
和import csv
new_data = ['test4', 4, 7, 10]
with open(r'data.csv', 'r') as in_csv, open(r'adj_data.csv', 'w') as out_csv:
reader = csv.reader(in_csv)
writer = csv.writer(out_csv)
for row, new_col in zip(reader, new_data):
row.append(new_col)
writer.writerow(row)
来提高可读性:
class ViewController: NSViewController {
@IBOutlet weak var searchField: NSSearchField!
override func viewDidLoad() {
super.viewDidLoad()
let maskLayer = CALayer()
searchField.layer = maskLayer
maskLayer.backgroundColor = searchField.backgroundColor?.CGColor
}
}