【问题标题】:Python script to extract data from csv file从 csv 文件中提取数据的 Python 脚本
【发布时间】:2022-07-07 23:46:36
【问题描述】:

在下面分享示例文件截图、我开发的脚本和其他详细信息。

在 countries_source.csv 文件中,我有一个国家/地区列表,我需要在 mycountries.csv 文件中创建其数据的子集,直到我在第一列中点击“亚洲”值。

使用下面的脚本,我能够获取到第 14 行的数据——这很好。但是,我需要以下方面的帮助。

在 countries_source.csv 文件中,我也应该根据 A 和 B 列中的值获得 17 到 21 行 - 也就是说,作为“South”(第 17 行)的后代的每一行都应该包含在mycountries.csv 文件也是如此。其他行应忽略。

import csv
import os

os.remove("C:/Users/Documents/Python Scripts/mycountries.csv")

with open("C:/Users/Documents/Python Scripts/countries_source.csv", "r") as source:
    csv_reader = csv.reader(source)
    lst=[]
    with open("C:/Users/Documents/Python Scripts/mycountries.csv", "w",newline='') as result:
        writer = csv.writer(result)
    #print(lst)
        for r in csv_reader:
            lst.append(r) 
        for ele in lst:
            if ele[0] != "Asia" :
                writer.writerow(ele)
            elif ele[0] == "Asia":
                break

根据country_source.csv文件中的数据和我上面讨论的要求,mycountries.csv文件截图的预期结果如下。

你能帮我一些想法吗? - 我是编码新手,请原谅代码中的任何明显错误。谢谢!

【问题讨论】:

    标签: python csv file logic


    【解决方案1】:

    创建一个布尔变量

    check = True
    

    以及南方及其后代的列表

    descendant = ["South","SW","SE"]
    

    并用这个替换你的 If 和 Elif

    check = True
    descendant = ["South","SW","SE"]
    
    for ele in lst:
        if check:
            writer.writerow(ele)
    
        if ele[0] == "Asia":  
            check = False
    
        if ele[0] in descendant or ele[1] in descendant :
            writer.writerow(ele)
    

    【讨论】:

    • 嗨 Athar - 谢谢。有没有办法只指定“南”而不是每次更新层次结构时手动更新后代列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2014-11-10
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多