【问题标题】:Get rid of blank rows when my CVS file is being created - Python创建我的 CSV 文件时删除空白行 - Python
【发布时间】:2018-03-24 10:54:10
【问题描述】:

当我运行以下代码并创建 CSV 时。在我的 CSV 文件中有空白行。我想知道如何摆脱空白行。

例如。

第 1 行 - 将包含我需要的数据

第 2 行 - 将为空白

第 3 行 - 将包含我需要的数据

第 4 行 - 将为空白

第 5 行 - 将包含我需要的数据

等等

我希望 CSV 文件在创建时呈现出来

第 1 行 - 将包含我需要的数据

第 2 行将包含我需要的数据

第 3 行 - 将包含我需要的数据

等等

我的代码在下面

from elasticsearch import Elasticsearch
import csv

es = Elasticsearch(["9200"])

# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
                {
                    "_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
                    "query": {
                        "bool": {
                            "should": [
                                {"wildcard": {"CN": "TEST1"}}

                            ]
                        }
                    }
}, size=10)



header_names = { 'DTDT': 'DATE', 'TRDT': 'TIME', ...}

with open('mycsvfile.csv', 'w') as f:  # Just use 'w' mode in 3.x
    header_present  = False
    for doc in res['hits']['hits']:
        my_dict = doc['_source'] 
        if not header_present:
            w = csv.DictWriter(f, my_dict.keys())
            w.writerow(header_names)  # will write DATE, TIME, ... in correct place
            header_present = True


        w.writerow(my_dict)

有人能告诉我怎么去这个地方吗?整天卡在这上面。

谢谢

【问题讨论】:

标签: python python-3.x python-3.5 python-3.4 python-3.6


【解决方案1】:

试试这个:

with open('mycsvfile.csv', 'w', newline='') as f:

这里是doc

正如footnote 中的文档所说:

如果未指定 newline=' ',则在引用字段中嵌入换行符 将无法正确解释,并且在使用 \r\n 的平台上 linendings on write 额外的 \r 将被添加。它应该永远是 安全地指定 newline=' ',因为 csv 模块自己做 (通用)换行符处理。

希望对你有帮助!

【讨论】:

  • 谢谢,这对我有用,我勾选了你的答案是正确的!!
【解决方案2】:

我并不是说这是最好的方法,因为我通常自己手动处理 CSV 内容,但是如果您需要快速而肮脏的修复,请尝试在您的代码之后直接执行此操作。

with open('mycsvfile.csv', 'r+') as f:
    data = f.read().replace("\n\n", "\n");
    f.seek(0);
    f.write(data);

这会在生成 CSV 时将其读入,将任何双新行替换为单行,然后将其全部写回。效率不高,但现在可以使用。

【讨论】:

    【解决方案3】:

    尝试将newline='' 参数与writerow() 一起使用。

    w.writerow(my_dict, newline='')

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多