我正在尝试制作一个程序,将玩家的分数以以下格式添加到文本文件中:
John 3 4 (The name and scores are seperated by "\t")
Bob 3 6 (Each new name has it's own line)
所以问题是,如果我让用户“Bob”在带有“John”的行下面,并且我用我的程序来表示“John”,它将创建一个新行,然后是“\t”+str(score),而我希望它被添加到同一行。假设约翰这次得了3分,文本文件会写:
John 3 4
3Bob 3 6
而不是:
John 3 4 3
Bob 3 6
到目前为止,我掌握的情况如下:
r = open("Class%d.txt"%(group),"r")
lines = r.readlines()
r.close()
for i, line in enumerate(lines):
if name in line:
lines[i] = line + "\t" + str(score)
break
else:
lines.append("\n" + name + "\t" + str(score))
w = open("Class%d.txt"%(group),"w")
w.writelines(lines)
w.close()
“\n”的位置有问题吗?谢谢你的帮助!你知道吗
出现问题的原因是
.readlines()
在每行末尾保留了换行符。另一种方法是,您可以将文件数据读入单个字符串,然后使用.splitlines()
将其拆分为行,默认情况下,这会丢弃换行符(不过,如果需要,您可以传递keepends
的True
参数来保留换行符)。你知道吗使用splitlines(),您的代码会变成这样:
您的数据文件是一个文本文件,但它不会以换行结束;这可能会导致某些文本编辑器和其他文本处理工具出现问题。你可以考虑改变这一点。你知道吗
更新
我修改了代码,在名称的末尾添加了一个tab(
\t
)。因此,新的分数不会被错误地添加到恰好包含新名称的名称中。例如,如果文件中有Alexander的一行,并且新名称是Alex,那么Alex的数据将转到新行,因为"Alex\t"
不在"Alexander\t"
。你知道吗readlines
返回行及其\n
我要修改这行:
strip
确保行尾没有\n
或\t
。你知道吗相关问题 更多 >
编程相关推荐