在 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))
尽管有下面的代码,字符串在 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))