2017-10-12 107 views
0

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

例如。

行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) 

有人可以告诉我如何让这个地方。一整天都陷在这个问题上。

感谢

+1

你能提供一个例子,说明'res ['hits'] ['hits']中的'docs'看起来像什么吗? – Chirag

+0

使用熊猫'df.dropna(how ='all')'https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html –

回答

0

试试这个:

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

这里是doc

,如文档中的footnote说:

如果换行=”'是未指定,n嵌入在引用字段 中的ewlines将不会被正确解释,并且在使用\ r \ n 排列的平台上写入额外的\ r将被添加。由于csv模块执行自己的 (通用)换行处理,因此应该始终使用 指定newline =''。

希望它有帮助!

+0

谢谢,这为我工作,我打了勾你的答案是正确的! – Rich

-1

尝试使用newline=''参数与writerow()

w.writerow(my_dict, newline='')

0

我并不是说这是做这件事的最好方法,因为我通常手动处理CSV文件,但是如果您需要快速修复,请尝试在代码后直接执行此操作。

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

这需要您的CSV,因为它产生,读它,替换所有双新行单的,并写这一切回来了。效率不高,但现在可以使用。