【发布时间】:2015-05-27 05:16:37
【问题描述】:
我正在尝试制作一个简单的基于文本的游戏,我需要存储玩家的分数。所以,我制作了这个小脚本,它可以从文件中获取数据,并且(据说)这样做:
- 遍历每个单词,并将该单词添加到其所在行的列表中;
- 当程序遇到新行时,将行列表添加到包含所有内容的通用列表中。
这是我的代码:
def readData(path):
file = open(path, 'r')
data = []
curWord = ''
curLineData = []
while True:
char = file.read(1)
if not char == '\n':
if not char == ' ':
curWord = curWord.join(char)
else:
curLineData.append(curWord)
curWord = ''
else:
data.append(curLineData)
curLineData = []
curWord = ''
if not char:
break
file.close()
return data
这些是file.txt的内容:
p1 1 4
p2 2 18
p3 3 3
这是我的问题:每当我运行代码时,我都会得到:
[['1', '1'], ['2', '2'], ['3', '3']]
当我期望得到:
[['p1', '1', '4'], ['p2', '2', '18'], ['p3', '3', '3']]
问题是它会跳过第一个单词,添加第二个单词,然后重复第一个单词,找到尽可能多的单词。经过一番测试,我还发现它只会在末尾有空行时添加最后一行。
我很想知道我做错了什么(除了愚蠢),如果你能告诉我如何解决它会很棒:)
【问题讨论】:
-
如果可以的话,一般来说
for line in file:...更符合pythonic。每次迭代都会给出文件的下一行。 -
请同时写下所需的输出
-
@ari 好的。我会尝试这样做并分享结果。
-
@user1767754 所需的输出是 [['p1', '1', '4'], ['p2', '2', '18'], ['p3', '3 ','3']]。我会更新问题