【问题标题】:List in Python Does Not Maintain Values When Use Replace MethodPython中的列表在使用替换方法时不保持值
【发布时间】:2018-04-15 15:12:50
【问题描述】:

所以,我编写了这段代码,它接收一个文件(在我的例子中,是一堆特朗普推文)。然后,我进入一个循环,我认为我可以通过一次替换关键词来递归地继续变形这些推文(例如,“俄罗斯”而不是“美国”来让美国再次伟大)。但是,列表不保留替换的值;所以,如果我做了一个替换,旧的替换将被删除。如何在此循环中一次一步地继续变形此文本?

load_text = raw_input("filename: ")
f = open(load_text)

text = []
for line in f:
    text.append(line)

loop = 1
while loop == 1:

    replace_this = raw_input("replace this: ")
    with_this = raw_input("with this: ")

    for line in text:
        line = line.replace(replace_this, with_this)
        print line

【问题讨论】:

  • 您正在重新分配line,而不是列表元素。

标签: python list recursion replace


【解决方案1】:

当您执行line = line.replace(replace_this, with_this) 时,变量line 被重新分配,它实际上并没有更新text 的内容。要在text 中分配实际行,您可以执行以下操作:

for idx, line in enumerate(text):
    text[idx] = line.replace(replace_this, with_this)
    print text[idx]

【讨论】:

  • 赞成正确使用 enumerate,而不是演示 for i in range(len(someseq)): 反模式。 :-)
  • 好的;这太棒了。谢谢;现在将研究列举。
【解决方案2】:

使用以下循环访问显式列表元素

for i in range (len(text)):
    text[i] = text[i].replace(replace_this, with_this)
    print(text[i])

【讨论】:

    猜你喜欢
    • 2022-07-03
    • 2012-11-22
    • 1970-01-01
    • 2021-06-29
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    相关资源
    最近更新 更多