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

Python游戏关卡TXT加载问题:如何将字符串转为元组列表

问题

我正在开发一款游戏,需从TXT文件加载关卡数据,但当前程序无法正确解析数据。以下是我的提取代码:

def create_level():
    global Level
    Level = []
    file = open("level_file.txt","r")
    lines_in_file = file.readlines()
    #Level = lines_in_file
    number_of_lines = len(lines_in_file)
    #print(number_of_lines)
    for line in range(number_of_lines):
        to_write = lines_in_file[line]
        Level = Level + ["(" + to_write.rstrip("\n") + ")"]
    print(Level)

TXT文件内容如下:

-30,-30,400,40
40,40,200,40
0,550,600,40

我期望的输出为:

[(-30,-30,200,40),(40,40,200,40),(0,550,600,40)]

但实际得到的输出是:

['(-30,-30,200,40)', '(40,40,200,40)', '(0,550,600,40)']

请问如何修改代码以得到期望的元组列表?

解决方案

你当前的代码只是把每行字符串包裹括号后作为字符串存入列表,并没有转换成真正的元组。需要将每行的字符串分割为数值,再组装成元组,修改后的代码如下:

def create_level():
    global Level
    Level = []
    # 使用with语句自动管理文件关闭,避免资源泄漏
    with open("level_file.txt", "r") as file:
        for line in file:
            # 去除换行符,按逗号分割字符串
            num_str_list = line.rstrip("\n").split(",")
            # 将每个字符串转换为整数,再包装成元组
            level_tuple = tuple(int(num) for num in num_str_list)
            Level.append(level_tuple)
    print(Level)

修改说明:

  • 用with语句处理文件,无需手动调用close(),代码更安全简洁。
  • 直接遍历文件对象,省去读取所有行再按索引循环的步骤。
  • 通过split(",")拆分每行字符串为数值字符串列表,再转换为整数并组装成元组。
  • 使用append()添加元素,比Level = Level + [xxx]的执行效率更高。

运行修改后的代码,即可得到你期望的元组列表输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:32:06