我有一个文本文件,其ASCII符号为:
###@@###%
##@@&&&#%
#@%%%%%%%
我需要阅读此文本文件以以下形式返回2D列表:
[['#','#','#','@','@','#','#','#','%'],
['#','#','@','@','&','&','&','#','%'],
['#','@','%','%','%','%','%','%','%']]
但是,我得到的输出为:
[['###@@###%'], ['##@@&&&#%'], ['#@%%%%%%%']]
到目前为止,这是我的代码:
def readLevel(n):
'''takes an integer as argument representing the level number
and reads the appropriate game board file. Returns it as a
2D list of strings.'''
file = open('./levels/ascii_level1.txt','r')
level = []
for line in file:
numString = line.split()
level.append(numString)
file.close()
return level
如何正确执行此操作?
答案 0 :(得分:0)
您可以使用list
将字符串转换为字符列表:
for line in file:
numString = list(line)
level.append(numString)
之所以可行,是因为list
将任何类型的序列转换为列表,并且字符串是字符序列。
line.split()
方法对此不起作用,因为它在空白处分割,但是字符串不包含任何空白。在某些语言中,您可以使用空分隔符调用.split('')
之类的等效方法,以将字符串拆分为单个字符,但这在Python中是错误的。