【问题标题】:how to iterate through a CSV file and write to another file in JSON only the csv rows with a certain value?如何遍历 CSV 文件并仅将具有特定值的 csv 行写入 JSON 中的另一个文件?
【发布时间】:2021-02-23 19:33:20
【问题描述】:

我正在尝试获取一个 csv 文件并对其进行迭代,并且只获取具有蓝色类别的行并将其写入 JSON 文件。到目前为止,我已经创建了一个程序,它获取所有 csv 行并写入 JSON 文件。我不太确定如何仅选择具有特定值的某些 csv 行。 这是具有此输出的程序

import csv
import json


def csv_to_json(csvFilePath, jsonFilePath):
    jsonArray = []

    with open(csvFilePath, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)

        for row in csvReader:
            jsonArray.append(row)

    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        jsonString = json.dumps(jsonArray, indent=4)
        jsonf.write(jsonString)


csvFilePath = r'csv_example.csv'
jsonFilePath = r'reader.json'
csv_to_json(csvFilePath, jsonFileP

输出:

[
    {
        "id": "1",
        "category": "blue",
        "password": "hi"
    },
    {
        "id": "2",
        "category": "red",
        "password": "no"
    },
    {
        "id": "3",
        "category": "blue",
        "password": "lol"
    },
    {
        "id": "4",
        "category": "yellow",
        "password": "yo"
    },
    {
        "id": "5",
        "category": "yellow",
        "password": "sup"
    },
    {
        "id": "6",
        "category": "orange",
        "password": "hello"
    },
    {
        "id": "7",
        "category": "blue",
        "password": "yeah"
    }
]

以这个csv文件为例

"id","category","password"
"1","blue","hi"
"2","red","no"
"3","blue","lol"
"4","yellow","yo"
"5","yellow","sup"
"6","orange","hello"
"7","blue","yeah"

我将如何做到这一点,以便仅将具有蓝色类别的行写入 JSON 文件。我试过了

if row.category == 'blue'

但这显然行不通

【问题讨论】:

    标签: json python-3.x csv read-write


    【解决方案1】:

    由于每一行都由 DictReader 转换为 python 字典,因此您只需在一个位置扩展代码。

    for row in csvReader:
       if row["category"] != "blue":
          continue
       jsonArray.append(row)
    

    if row["category"] != "blue": 行检查该行中键类别的值是否不是蓝色的。 如果该行不是蓝色的,代码将continue 与下一行

    【讨论】:

    • 甜蜜而简单——正是我想要的,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2018-05-23
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多