写入文件,如果确切名称在行,那么......其他

时间:2015-02-15 14:12:42

标签: python

这是我的程序的一部分,它首先读取一个文件,检查用户将给出的“名称”是否在文件中,如果是,那么它会添加到该行,但如果不是然后它会开始一个新的界限。

r = open("Class%s.txt"%(group),"r")
lines = r.readlines()
r.close()
for i, line in enumerate(lines):
    if name in line:
            lines[i] = line.strip() + "\t" + str(score) + "\n"
            break
else:
    lines.append("\n" + name + "\t" + str(score))
w = open("Class%s.txt"%(group),"w")
w.writelines(lines)
w.close()

我对这个程序的问题是,如果名为“Alexander”的用户在名为“Alex”的用户之前使用该程序,程序会将“Alex”的分数写在与“Alexander”相同的行上因为它搜索每一行的字符“Alex”而不是它是否是完全匹配。感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:0)

我认为每一行都是

Alexander 25 31 19 16

我建议比较像

if name.lower() == line.split(None, 1)[0].lower():

(与该行的第一个词进行比较,并忽略大写)。

答案 1 :(得分:-4)

只需更改

if name in line:

if name in line.strip():

通过这种方式,您可以查看单词列表,而不是字符列表。而且你会匹配完整的单词。