【发布时间】:2021-05-08 16:52:40
【问题描述】:
【问题讨论】:
标签: python python-3.x csv write
【问题讨论】:
标签: python python-3.x csv write
我将从代码示例开始(我直接根据您在帖子中提供的数据基于 test1 和 test2.csv):
## Read first csv into list
f = open("test1.csv", "r")
csv1 = f.readlines()
f.close()
## Read second csv into list
f = open("test2.csv", "r")
csv2 = f.readlines()
f.close()
## Create new csv header
header = csv1[0].replace("\n", "") + "," + csv2[0].replace("\n", "")
## Create data list and append lines from csv1 and csv2
data = []
for x in range(1, len(csv1)):
data.append(csv1[x].replace("\n", "") + "," + csv2[x].replace("\n", "") + "\n")
## Print new header and data to a new csv file
f = open("test3.csv", "w")
f.write(header + "\n")
f.writelines(data)
这方面的 cmets 非常简单明了,让您知道每个代码块完成了什么。
在假设没有键将数据从一个文件关联到另一个文件的情况下,这样做是可行的(就像在数据库中,您有一个 ID 可以在表之间关联)。
您也可以使用内置的 csv 库并将其分解为函数等,但对于如此简单的事情,我发现像我一样将其写出来更容易。
这是输出:
offset,status,value
1,ok,12
2,nok,13
3,ok,14
【讨论】:
您可以使用以下方法同时遍历两个文件:
file1 = open("test1.csv", "r")
file2 = open("test2.csv", "r")
file3 = open("test3.csv", "w")
for line1, line2 in zip(file1, file2):
file3.write(line1+line2+"\n")
file1.close()
file2.close()
file3.close()
这假定两个文件具有相同的行数。如果这不是真的,这种方法只会连接行直到较短的文件结束。 即:如果 file1 有 10 行,而 file2 有 15 行,则输出文件将忽略 file2 的最后 5 行。
【讨论】: