将特定列写入输出文件然后在 Excel 中打开时出现 Python CSV 格式问题

标签 python excel csv formatting

问题

我有一个包含大量项目的 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/

相关文章:

生成两个选项之一的 Excel 公式

VBA:保存而不覆盖现有文件

python - 处理 Python CSV 文件读取的最后一行

php - 如何生成 csv 而不添加到 php 中的表

python - 在 unix 系统上使用 Python 对文件进行就地排序

python - 在Python3中Pickle一个GdkPixbuf.Pixbuf对象

python - 在代理后面运行构建时,(...) 主机名 <proxy> 上的下载错误与 '*.c.ssl.faSTLy.net' 、(...) 中的任何一个都不匹配

python - 模块 'tensorflow_datasets.core.features' 没有属性 'text'

Oracle 数据库查询在第二次运行时抛出错误

返回比 Linux `wc -l` 高得多的行数的 Python 代码