如何使用用户输入 Python 3 删除文本文件中的特定行

开放传奇

我的 python 3 程序有问题。我正在尝试构建一个函数,该函数使用用户输入删除文本文件中的特定行,但终生无法让它工作。由于我是初学者,我想知道是否有更有经验的人可以帮助我构建该功能。

Python 3 代码:

def main():
    players = load_results_from_file("user_res.txt")
    while True:
        show_menu()
        user_choice = input("Välj alternativ: ")
        print()
        if user_choice == "1":
            show_players(players)
        elif user_choice == "2":
            add_player(players)
        elif user_choice == "3":
            save_players(players, "user_res.txt")
        elif user_choice == "4":
            del_player(players)
        elif user_choice == "5":
            break
        else:
            print("Du angav ett felaktivt val, försök igen")
    print("Ha en bra dag!")

def save_players(players, file_name):
    my_file = open(file_name, "w")
    for player in players:
        my_file.write("{};{};{};{}\n".format(player["name"], 
        player["round_1"], 
        player["round_2"], player["round_3"]))
    my_file.close()
    print("Sparat!")

def add_player(players):
    name = input("Ange namn: ")
    round_1 = input("Ange varv 1: ")
    round_2 = input("Ange varv 2: ")
    round_3 = input("Ange varv 3: ")
    players.append({
        "name": name,
        "round_1": round_1,
        "round_2": round_2,
        "round_3": round_3
     })

def show_players(players):
    print("*"*40)
    print("Mini Golf")
    print("*"*40)
    for player in players:
        print("{:15} {} {} {}".format(player["name"], player["round_1"], 
        player["round_2"], player["round_3"]))
    print()

def show_menu():
    print("Klubbmästerskap i minigolf")
    print("*"*40)
    print()
    print("Meny")
    print("*"*4)
    print("1) Visa resultat")
    print("2) Lägg till resultat")
    print("3) Spara resultat")
    print("4) Radera spelare")
    print("5) Avsluta programmet")

def load_results_from_file(file_name):
    players_list = []
    try:
        my_file = open(file_name, "r")
    except:
        my_file = open(file_name, "w").close()
        print("INFO: Ingen fil hittades, så vi skapa den!")
        return players_list

    content = my_file.read()
    for players in content.split("\n"):
        try:
            player = players.split(";")
            players_list.append({
                "name": player[0],
                "round_1": player[1],
                "round_2": player[1],
                "round_3": player[1]
             })
        except:
            pass
     return players_list


def del_player(players):
    delete_player = input("Ange spelaren du vill radera: ")
    my_file = open("user_res.txt", "r")
    lines = my_file.readlines()
    my_file.close()
    my_file = open("user_res.txt", "w")
    for line in lines:
        if delete_player not in lines:
            my_file.write(line)


main()

一些文本是瑞典语,如果有必要,我会更改它。但是我无法工作的功能是del_player。我希望用户使用 delete_player 输入他们想要删除的播放器,但到目前为止它没有从文本文件中删除任何内容。

克劳迪奥

问题肯定是在源代码中用“#(1) !!!”标记的一个小错误:

def del_player(players):
    delete_player = input("Ange spelaren du vill radera: ")
    my_file = open("user_res.txt", "r")
    lines = my_file.readlines()
    my_file.close()
    my_file = open("user_res.txt", "w")
    for line in lines:
        print(type(delete_player), delete_player, type(line), line) #(2) !!!
        if delete_player not in line: #(1) !!!
            my_file.write(line)

如果这不能解决问题,添加一个print()(标记为 #(2) !!! 如上所述可以澄清它是如何delete_playerline.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python 3:如何使用用户的输入从字典内列表中的值创建列表(或字典)?

如何从python中的文本文件中删除特定行

使用Python从文本文件中删除特定数量的行

使用Python 3.x删除文本文件中的所有空格

从文本文件中删除所有行直到特定的字符串-python3

我如何让python3在文本文件中搜索特定的字符串

Python 3+ 如何编辑文本文件中的一行

Python如何替换文本文件中特定行中的特定单词?

如何从 Python 中的文本文件中删除包含特定字母的单词?

如何从 Python 中的文本文件中的每一行中删除模式

使用Python如何从文本文件的行中删除冗余

如何在Python中从文本文件中删除行?

如何使用Python读取文本文件中的特定行?

使用 python 从文本文件中提取特定行

Python 3:如何使用用户输入并从词典列表中检索答案来制作游戏,然后使用积分系统?

如何从文本文件中删除特定行?

如何删除文本文件中的特定行?

如何从文本文件python中删除编号最大的行?

Python 2.7 - 如何删除文本文件中超过 x 数量的行?

如何在Python3中颠倒个别行和单词,专门用于文本文件中的每个段落?

如何使用 Python3 使用用户输入变量更改列表的内容

在没有用户输入的情况下替换/删除打开的文本文件中的子字符串(Python 3)

如何从用户输入中搜索文本文件而不是使用python打印文本文件?

我如何从python中的特定行读取文本文件?

使用python重命名文本文件中的特定行

使用 python 从文本文件中打印出特定行

如何让用户输入的详细信息进入python文本文件中的新行?

如何在python 3x中将文本文件中的行追加到多个列表

如何通过在Python3函数中执行文本文件行来实例化全局变量?