You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CSV提取修正:按要求输出南半球国家名称至result.txt

修正后的Python代码及问题解析

嘿,我帮你把这段代码修正过来,顺便梳理下原代码里的几个关键问题:

原代码存在的问题

  • 输出文件名错误:需求要求写入result.txt,但原代码打开的是average-latitude-longitude-countries.txt
  • 写入逻辑重复冗余:每次循环都把整个joined列表转成字符串写入,导致文件里会出现累积重复的内容(比如第一次写["巴西"],第二次写["巴西","阿根廷"])
  • 语法错误:最后一行的' '是无效的换行写法,会触发语法报错
  • 文件管理不规范:没有使用上下文管理器,可能存在文件未正确关闭的风险

修正后的代码

# 使用with上下文管理器自动管理文件,无需手动关闭
with open("average-latitude-longitude-countries.csv", "r") as infile, open("result.txt", "w") as outfile:
    # 跳过CSV的表头行
    infile.readline()
    southern_countries = []
    for line in infile:
        # 去除行尾换行符,避免分割后出现空元素
        line = line.strip()
        splited = line.split(",")
        
        # 根据分割后的长度判断纬度和国家名称的索引
        if len(splited) > 4:
            latitude = float(splited[3])
            country_name = splited[2]
        else:
            latitude = float(splited[2])
            country_name = splited[1]
        
        # 筛选南半球(纬度小于0)的国家
        if latitude < 0:
            southern_countries.append(country_name)
    
    # 两种输出方式任选其一:
    # 方式1:每个国家单独占一行(更易读)
    for country in southern_countries:
        outfile.write(f"{country}\n")
    
    # 方式2:写入整个列表(和原代码逻辑类似,但只写入一次)
    # outfile.write(str(southern_countries))

修正说明

  1. 用with语句打开文件,会自动在代码块结束后关闭文件,避免资源泄漏
  2. 修正了输出文件名,严格匹配需求的result.txt
  3. 调整了写入逻辑:先收集所有符合条件的国家,再统一写入,避免重复输出累积列表
  4. 修复了换行符的语法错误,同时用line.strip()处理了行尾的换行符,避免分割后出现无效空元素
  5. 变量名更具语义化(比如southern_countries代替joined),提升代码可读性

内容的提问来源于stack exchange,提问作者ironman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:49:23