使用python替换字符串列表中的单词

时间:2016-08-15 04:10:20

标签: python

我有一个脚本,我正在尝试优化工作,我基本上需要用脚本的用户名替换脚本中的“用户名”。我最终想要一遍又一遍地为一个人列表这样做,但我遇到了一个看似非常基本的部分的问题。

f = open("Exiting.txt","r") #opens file with name of "exiting.txt"

line1 = (f.readline())
line2 = (f.readline())
line3 = (f.readline())
line4 = (f.readline())
line5 = (f.readline())
line6 = (f.readline())
line7 = (f.readline())
ext = input("Enter a name to exit: ")

lst = [line1,line2,line3,line4,line5,line6,line7]
for line in lst:
    line = line.replace("username",ext)
print(line1)



line1 = line1.replace("username",ext)
print(line1)

当我运行这个时,我得到的第一个打印输出与以前完全相同(并且所有其他行也一样),第二行更像我想要的

我希望for循环遍及用实际用户名替换单词username的行。

  

输入要退出的名称:millingtonc

     

mkdir“\ qnapnas01 \ archive \ Data \ Users \ username”

     

mkdir“\ qnapnas01 \ archive \ Data \ Users \ millingtonc”

2 个答案:

答案 0 :(得分:0)

我认为问题在于您要更改变量l的值,而不是line1或变量lst本身中的l1。以下代码可以帮助您解决问题:

lst = [line1,line2,line3,line4,line5,line6,line7]
for i in range(len(lst)):
   lst[i] = lst[i].replace("username",ext)

我不确定最终的结果,但基本的想法是你可以更改列表中的值并实际替换你要求的字符串。

答案 1 :(得分:0)

更改for循环中的字符串不会更改line1变量。此外,您可能应该找到一种更好的方法来从文件中读取,这可以帮助您避免此问题。我在下面提出了一种方法,但是还有很多其他方法可以完成基本相同的事情。

ext = input("Enter a name to exit: ")

with open("Exiting.txt", "r") as f:
    lst = [f.readline() for _ in range(7)]

lst = [line.replace("username", ext) for line in lst]
print(lst)