在 For 循环中使用替换方法

Using Replace Method in a For Loop

尽管有下面的代码,字符串在 tkinter 网格中打印出来时仍然完全不变。我想让它删除 disallowedCharacters 中的每个字符。一定有一些我不了解字符串如何改变的地方。请注意,itemSeries 从另一个函数传递到以下代码,该函数使用 Selenium 从 Web 中获取文本。

itemSeriesString = str(itemSeries)
disallowedCharacters = "()#1234567890"
for character in disallowedCharacters:
    seriesName = itemSeriesString.replace(character, "")

itemSeriesLabel = Label(frame, text="Series:", font='time 12 bold')
itemSeriesLabel.grid(column=2, row=4, sticky='w', padx=10)
itemPrintSeries = Label(frame, text=seriesName)
itemPrintSeries.grid(column=3, row=4, sticky='e')

我尝试转义 ()# 字符,但没有任何改变。

记住 .replace() 永远不会修改原始字符串;它 returns 一个包含操作结果的新字符串。

for 循环的每次迭代中,您是:

  • 原始的、未清洗的itemSeriesString
  • 从原始字符串中过滤掉一个字符的所有实例
  • 将该过滤的结果分配给 seriesName

您永远不会累积替换操作的结果,因此大多数禁用字符将保留。

你应该在左右手边使用相同的变量,这样你就可以累积替换操作的结果:

disallowedCharacters = "()#1234567890"
seriesName = itemSeriesString
for character in disallowedCharacters:
    seriesName = seriesName.replace(character, "")

或者,更好的是,使用 filter():

过滤掉那些字符
seriesName = ''.join(filter(lambda x: x not in disallowedCharacters, itemSeriesString))