如何替换不在当前循环 Python 中的文本文件中的一行
How do I replace a line in a text file thats not in the current loop Python
我是编程新手,如果有更简单的方法,请告诉我。有一个名为 Duelist.txt
的文本文件,其中包含以下内容:
-------------------------------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
------------------------------------------------
此 changeUsername(login,duelistID,exists,server):
函数在 login
和 exists
为 TRUE
时运行。如果他们想更改用户名,它会提示用户输入新用户名,然后函数 supposed 更改当前位置后 Duelist.txt
两行中的用户名,但它没有...
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
with open("Duelist.txt", 'r+') as file:
for index, line in enumerate(serverSearch):
if duel in line:
if search == serverSearch[index+1]:
serverSearch[index+2] = username
file.write(line.replace(serverSearch[index+2], username))
if choice == "n":
pass
print("Exiting Edit Server Username...")
time.sleep(1)
这是函数中的用户输入changeUsername(login,duelistID,exists,server)
login
和 exists
为 True,duelistID
为 Mokuba Kaiba,server
为 Amazon。
Would you like to change this username for Amazon?
Press "y" key for yes or press "n" key for no followed by the Enter key
Mokuba Kaiba:y
Please enter new username: Mokuba
Exiting Edit Server Username...
用户输入后,我在 Duelist.txt
中得到以下内容
Duelist: Mokuba Kaiba---------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
-------------------------------------------------
我费了好大的劲才弄清楚这个问题并制定了一个简单的解决方案,但我只是一个拥有四流代码的三流编码员。任何人都可以帮助使这个功能做它应该做的事情吗?
试试这个:
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
for index, line in enumerate(serverSearch):
if duelistID in line:
serverSearch[index]=(serverSearch[index]).replace(duelistID,newUsername)
with open("Duelist.txt","w") as file:
file.write('\n'.join(serverSearch))
if choice == "n":
pass
print("Exiting Edit Server Username...")
changeUsername(True,"Kaibaman",True,"Amazon")
我个人更喜欢将整个文本文件加载到列表中,进行必要的更改并将整个列表写回到文件中。
我想我需要重新表述我的问题,但 Pervez 能够根据我的需要进行必要的更改。我只是添加了一些调整以得出以下结果:
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
for index, line in enumerate(serverSearch):
if duelistID in line:
if search == serverSearch[index+1]:
serverSearch[index+2]=(serverSearch[index+2]).replace(serverSearch[index+2],username)
with open("Duelist.txt","w") as file:
file.write('\n'.join(serverSearch))
if choice == "n":
pass
print("Exiting Edit Server Username...")
在这种情况下,如果函数可以匹配 duelistID
和 search
行,该函数将仅替换 Duelist.txt
中的文本。希望我解释正确。
我是编程新手,如果有更简单的方法,请告诉我。有一个名为 Duelist.txt
的文本文件,其中包含以下内容:
-------------------------------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
------------------------------------------------
此 changeUsername(login,duelistID,exists,server):
函数在 login
和 exists
为 TRUE
时运行。如果他们想更改用户名,它会提示用户输入新用户名,然后函数 supposed 更改当前位置后 Duelist.txt
两行中的用户名,但它没有...
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
with open("Duelist.txt", 'r+') as file:
for index, line in enumerate(serverSearch):
if duel in line:
if search == serverSearch[index+1]:
serverSearch[index+2] = username
file.write(line.replace(serverSearch[index+2], username))
if choice == "n":
pass
print("Exiting Edit Server Username...")
time.sleep(1)
这是函数中的用户输入changeUsername(login,duelistID,exists,server)
login
和 exists
为 True,duelistID
为 Mokuba Kaiba,server
为 Amazon。
Would you like to change this username for Amazon?
Press "y" key for yes or press "n" key for no followed by the Enter key
Mokuba Kaiba:y
Please enter new username: Mokuba
Exiting Edit Server Username...
用户输入后,我在 Duelist.txt
Duelist: Mokuba Kaiba---------------------------
Duelist: Seto Kaiba
Server: Amazon
Username: Kaibaman
Password: Blue-Eyes White Dragon
-------------------------------------------------
Duelist: Mokuba Kaiba
Server: Amazon
Username: Kaibaboy
Password: KaibabestBro
-------------------------------------------------
我费了好大的劲才弄清楚这个问题并制定了一个简单的解决方案,但我只是一个拥有四流代码的三流编码员。任何人都可以帮助使这个功能做它应该做的事情吗?
试试这个:
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
for index, line in enumerate(serverSearch):
if duelistID in line:
serverSearch[index]=(serverSearch[index]).replace(duelistID,newUsername)
with open("Duelist.txt","w") as file:
file.write('\n'.join(serverSearch))
if choice == "n":
pass
print("Exiting Edit Server Username...")
changeUsername(True,"Kaibaman",True,"Amazon")
我个人更喜欢将整个文本文件加载到列表中,进行必要的更改并将整个列表写回到文件中。
我想我需要重新表述我的问题,但 Pervez 能够根据我的需要进行必要的更改。我只是添加了一些调整以得出以下结果:
def changeUsername(login,duelistID,exists,server):
index = 0
username = "Username: "
serverSearch = []
duel = "Duelist: " + duelistID
search = "Server: " + server
if login == True and exists ==True:
print("Would you like to change this username for " + server + "?")
print("Press \"y\" key for yes or press \"n\" key for no followed by the Enter key")
choice = input(f'{duelistID}:')
if choice == "y":
newUsername = input("Please enter new username: ")
username += newUsername
with open("Duelist.txt", 'r') as file:
content = file.readlines()
for line in content:
serverSearch.append(line.strip("\n"))
for index, line in enumerate(serverSearch):
if duelistID in line:
if search == serverSearch[index+1]:
serverSearch[index+2]=(serverSearch[index+2]).replace(serverSearch[index+2],username)
with open("Duelist.txt","w") as file:
file.write('\n'.join(serverSearch))
if choice == "n":
pass
print("Exiting Edit Server Username...")
在这种情况下,如果函数可以匹配 duelistID
和 search
行,该函数将仅替换 Duelist.txt
中的文本。希望我解释正确。