在python循环中跳过csv文件中的空白单元格

2024-05-19 21:55:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在提取csv文件中的值,以将它们合并到yaml文件中

问题是,在我的csv文件的~6000行中,有几个单元格是空的,我想跳过这些单元格并继续我的循环,如下所示:

import csv
import ruamel.yaml
from csv import reader
from ruamel.yaml import YAML

yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True

with open('config.yaml') as yml:
    doc = yaml.load(yml)

with open('params.csv') as f:
    next(f)
    for i, data in enumerate(reader(f)):
        doc['components']['star']['init'][0]['values']['logg'] = float(data[4])
        filename = data[1].split(".")[0] 
        with open(f'{filename}.yaml', 'w') as out:
            yaml.dump(doc, out)

csv文件如下所示:

Starid   filename                                   Teff           TeffErr        logg
1        ngc6397id000000002jd2456871p6250f000.fits  6304.19055182  97.72410249    4.21614564
2        pgc6397id000000002jd2456871p6250f000.fits  7304.19055182  97.72410249    
3        qgc6397id000000002jd2456871p6250f000.fits  8304.19055182  97.72410249    5.21614564

我试过从Python: How to check if cell in CSV file is empty?开始的解决方案 但是我认为我做得不对,我看不出在哪里在正确的位置集成if not row[0]循环,知道吗? 谢谢


Tags: 文件csvfromimportyamldatadocas
1条回答
网友
1楼 · 发布于 2024-05-19 21:55:26

如果我正确理解您的问题,您可以插入如下值的检查:

with open('params.csv') as f:
    next(f)
    for i, data in enumerate(reader(f)):
        if data[4] != '':
            doc['components']['star']['init'][0]['values']['logg'] = float(data[4])
            filename = data[1].split(".")[0] 
            with open(f'{filename}.yaml', 'w') as out:
                yaml.dump(doc, out)

相关问题 更多 >