Пропуск пустой ячейки из CSV-файла в цикле python - PullRequest
0 голосов
/ 16 февраля 2020

Я сейчас извлекаю значения в CSV-файл, чтобы включить их в YAML-файлы.

Проблема заключается в том, что в ~ 6000 строк в моих CSV-файлах пустые несколько ячеек, и я хотел бы пропустить эти ячейки и продолжить мой l oop, который выглядит как:

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: Как проверить, пуста ли ячейка в CSV-файле? Но я думаю, что я делаю это неправильно, я не вижу, где интегрировать if not row[0] l oop в нужном месте, есть идеи? Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2020

Если я правильно понимаю вашу проблему, вы можете просто вставить проверку значения следующим образом:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...