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

如何用Python读取特殊格式的整数-国家映射文本文件并加载至各类数据结构?

问题描述

我有一个存储了整数及其对应国家映射关系的文本文件,该文件的存储格式较为特殊。请问该如何导入、读取该文本文件中的数据,并将其加载至Python数据结构中,例如两个列表、字典、DataFrame等。
(原提问附带了文件实际存储格式的示例截图,可根据实际分隔规则微调读取逻辑)

实现方案

通用读取逻辑

不管最终需要加载为哪种Python数据结构,核心的读取流程是一致的,只需根据文件实际的分隔规则调整拆分参数即可:

  • 用上下文管理器打开文件,避免文件句柄泄漏
  • 逐行过滤无效内容,包括空行、纯分隔符行、注释行
  • 拆分每行的两个有效字段(整数值、国家名称),做好对应类型转换

不同数据结构的加载实现

加载为一一对应的两个列表

适合需要独立遍历编码、国家两个维度数据的场景:

# 初始化两个空列表
code_list = []
country_list = []
with open("country_code_map.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 清理行首尾的换行符、空白字符
        clean_line = line.strip()
        # 跳过空行
        if not clean_line:
            continue
        # 拆分字段,maxsplit=1表示仅在第一个分隔位置拆分
        code, country_name = clean_line.split(maxsplit=1)
        # 转成整数类型后存入编码列表
        code_list.append(int(code))
        # 国家名称直接存入对应列表
        country_list.append(country_name)

注意:拆分时一定要加maxsplit=1参数,避免国家名称本身包含空格、分隔符时出现拆分错位。比如国家名“United Kingdom of Great Britain and Northern Ireland”本身包含多个空格,加这个参数就能保证只有开头的数字被识别为编码,后面的整段内容都作为国家名称处理。

加载为字典映射

适合通过整数编码快速查询对应国家的场景,查询时间复杂度为O(1):

code_country_dict = {}
with open("country_code_map.txt", "r", encoding="utf-8") as f:
    for line in f:
        clean_line = line.strip()
        if not clean_line:
            continue
        code, country_name = clean_line.split(maxsplit=1)
        code_country_dict[int(code)] = country_name

加载为pandas DataFrame

适合后续做数据清洗、筛选、分析、导出的场景,有两种灵活的实现方式:

  1. 复用前面已经读取好的两个列表,直接生成DataFrame:
import pandas as pd
map_df = pd.DataFrame({
    "整数编码": code_list,
    "对应国家": country_list
})
  1. 直接用pandas内置的读取方法适配特殊格式,无需手动逐行拆分:
import pandas as pd
map_df = pd.read_csv(
    "country_code_map.txt",
    sep=r"\s+", # 匹配任意长度的空格、制表符作为分隔符
    header=None, # 文件没有表头行
    names=["整数编码", "对应国家"], # 手动指定列名
    skip_blank_lines=True, # 自动跳过空行
    dtype={"整数编码": int} # 直接指定编码列为整数类型
)

适配提示:如果文件使用的是竖线、冒号这类特殊分隔符,只需要修改sep参数的正则规则即可,比如竖线分隔就写sep=r"\|",冒号分隔就写sep=r":"。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 17:36:09