问题
我有一个包含大量项目的 CSV 文件。
第一列可以包含 IP 地址或随机垃圾。我唯一关心的另一栏是第四栏。
我编写了以下代码片段,试图检查第一列是否是 IP 地址,如果是,则将其与第四列的内容并排写入另一个 CSV 文件。
with open('results.csv','r') as csvresults:
filecontent = csv.reader(csvresults)
output = open('formatted_results.csv','w')
processedcontent = csv.writer(output)
for row in filecontent:
first = str(row[0])
fourth = str(row[3])
if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', first) != None:
processedcontent.writerow(["{},{}".format(first,fourth)])
else:
continue
output.close()
这在一定程度上是有效的。但是,在 Excel 中查看时,这两个项目都放置在单个单元格中,而不是两个相邻的单元格中。如果我在记事本中打开它,我可以看到每一行都用引号引起来。如果删除这些,Excel 将正确显示这些列。
输入示例
1.2.3.4,rubbish1,rubbish2,reallyimportantdata
所需输出
1.2.3.4 reallyimportantdata - two separate columns
实际输出
"1.2.3.4,reallyimportantdata" - single column
问题
有什么方法可以伪造format
部分,使其不写出引号吗?或者,实现我想要做的事情的最佳方法是什么?
我尝试写入另一个文件并删除这些行,但是尽管没有抛出任何错误,但结果是相同的......
最佳答案
writerow()
获取一个元素列表并将每个元素写入一列中。由于您只提供一个包含一个元素的列表,因此它被放置到一列中。
相反,为 writerow()
提供一个列表:
processedcontent.writerow([first,fourth])
关于将特定列写入输出文件然后在 Excel 中打开时出现 Python CSV 格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45695450/