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
相关产品推荐
相关产品推荐

