如何将地图文件加载得到的字符串列表构成的列表转为整数列表构成的列表?
解决方案
这问题我之前处理类似的地图配置文件时也碰到过,其实只需要在你的现有列表推导式基础上,再加一层整数转换的逻辑,同时优化下文件读取和字符串分割的细节(避免空字符串导致的转换错误),就能轻松搞定。
优化后的完整代码
# 用with语句打开文件更安全,会自动关闭文件句柄 with open("/Resources/Maps/level1.map") as map_file: # 双层列表推导式完成字符串到整数的转换 int_lines = [ [int(num_str) for num_str in line.strip().split() if num_str] for line in map_file ]
关键细节解释
with语句:代替直接open(),不用手动调用close(),避免因为程序异常导致文件句柄泄漏,是Python处理文件的最佳实践。line.strip():比你原来的strip("\n")更通用,能去掉行首行尾所有空白字符(包括空格、制表符、换行符),确保分割前的内容干净。split()不带参数:自动按任意空白字符(多个空格、制表符、换行)分割,比split(" ")更智能,不会因为多个连续空格产生空字符串。if num_str过滤:额外加一层判断,彻底避免空字符串(比如空行、全空格行)转换整数时抛出ValueError的问题。- 内层
int(num_str):把每个分割后的字符串数值直接转换成整数,生成整数子列表。
效果示例
如果你的原始lines是:
[['3'], ['15'], ['8'], ['0', '0', '0']]
转换后的int_lines就会变成:
[[3], [15], [8], [0, 0, 0]]
内容的提问来源于stack exchange,提问作者Gene Lin
相关产品推荐
相关产品推荐

