所以我正在为一所学校的项目工作,我们将获得一个类似于此处所示的文本文件:
with open(fileName) as f:
grid = f.read().split("/n")
我遇到的问题是将文本读取到2D列表。每当我尝试它时,要么创建一个非常长的字符串列表,如下所示:
此代码:
['+---+-----+-----+\n| | | |\n| | | |\n| | +=====+\n+---+ | | |\n| | | | |\n| +-+ +=====+\n| | | | |\n| | +-+ | |\n| | | | |\n| | +-+ |\n| | |_____|\n| | | |\n+---+-----+-----+']
给出这个输出:
with open(fileName) as f:
grid = f.read().split()
或删除空格的地方:
这段代码:
['+---+-----+-----+', '|', '|', '|', '|', '|', '|', '|', '|', '|', '|', '+=====+', '+---+', '|', '|', '|', '|', '|', '|', '|', '|', '|', '+-+', '+=====+', '|', '|', '|', '|', '|', '|', '|', '+-+', '|', '|', '|', '|', '|', '|', '|', '|', '|', '+-+', '|', '|', '|', '|_____|', '|', '|', '|', '|', '+---+-----+-----+']
给出这个:
[['+','-','-','-','+','-','-','-','-','-','+','-','-','-','-','-','+']
['|',' ',' ',' ','|',' ',' ',' ',' ',' ','|',' ',' ',' ',' ',' ','+']
['|',' ',' ',' ','|',' ',' ',' ',' ',' ','|',' ',' ',' ',' ',' ','+']
.... etc
我需要的是一个包含每个字符的2D列表,(是的,偶数空格),以便我可以稍后操作每个字符。这就是我正在寻找的:
{{1}}
很抱歉,如果这很容易,我对编程很新。此外,我在这里查看了其他问题,无法找到与我需要的相似的内容,如果已经回答,请提前抱歉。
答案 0 :(得分:1)
喜欢这个吗?
>>> with open('file') as f:
... lines = f.read().splitlines()
>>> [list(i) for i in lines]
[['+', '-', '-', '-', '+', '-', '-', '-', '-', '-', '+', '-', '-', '-', '-', '-', '+'],
['|', ' ', ' ', ' ', '|', ' ', ' ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | '],
[' | ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | '],
[' | ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', '+', ' = ', ' = ', ' = ', ' = ', ' = ', '+'],
['+', '-', '-', '-', '+', ' ', ' ', ' ', ' ', ' ', ' | ', ' ', ' ', ' |', ' ', ' ', '|'],
['|', ' ', ' ', ' ', '|', ' ', ' ', ' ', ' ', ' ', '|', ' ', ' ', '|', ' ', ' ', '|'],
['|', ' ', ' ', ' ', '+', '-', '+', ' ', ' ', ' ', '+', ' = ', ' = ', ' = ', ' = ', ' = ', '+'],
[' | ', ' ', ' ', ' ', ' | ', ' ', ' | ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | '],
[' | ', ' ', ' ', ' ', ' | ', ' ', '+', '-', '+', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | '],
[' | ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' | ', ' ', ' |', ' ', ' ', ' ', ' ', ' ', '|'],
['|', ' ', ' ', ' ', '|', ' ', ' ', ' ', '+', '-', '+', ' ', ' ', ' ', ' ', ' ', '|'],
['|', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | ', '_', '_', '_', '_', '_', ' | '],
[' | ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', ' | ', ' ', ' ', ' ', ' ', ' ', '|'],
['+', '-', '-', '-', '+', '-', '-', '-', '-', '-', '+', '-', '-', '-', '-', '-', '+']]
答案 1 :(得分:0)
鉴于这是一个学校项目,我故意避免发布完整的解决方案,所以这里有一些提示应该足以弄明白:
"/n"
不是换行符。研究输出字符串以查看换行符是。这样,你就分裂了一些在字符串中找不到的东西,它为你提供了一个单元素的数组。
.split()
分裂所有空格。不是你想要的。第一次尝试更好,但见上文。
将文件拆分为行时,需要将每行拆分为字符。 list(line)
会为一行做到这一点。研究列表推导或map
函数,以找出如何在拆分结果中的每一行应用list
。
答案 2 :(得分:0)
逐行阅读,如下:
for line in f:
print(line)
您可能不需要从字符串创建列表,因为您可以直接在字符串上使用index []。