如何在Python的二维字符串列表中读取文本文件

时间:2019-12-04 01:02:41

标签: python python-3.x string

我有一个文本文件,其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

如何正确执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用list将字符串转换为字符列表:

    for line in file:
        numString = list(line)
        level.append(numString)

之所以可行,是因为list将任何类型的序列转换为列表,并且字符串是字符序列。

line.split()方法对此不起作用,因为它在空白处分割,但是字符串不包含任何空白。在某些语言中,您可以使用空分隔符调用.split('')之类的等效方法,以将字符串拆分为单个字符,但这在Python中是错误的。