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

我试图避开()#个字符,但没有改变任何事情.

推荐答案

Remember that .replace() never modifies the original string; it returns a new string with the result of the operation.

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

  • original, uncleaneditemSeriesString为例
  • 从原始字符串中筛选出一个字符的所有实例
  • 将过滤结果指定为seriesName.

你永远不会积累替换操作的结果,所以大多数被禁止的字符都会保留下来.

应在左侧和右侧使用相同的变量,以便累积替换操作的结果:

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

或者,更好的是,使用filter()过滤掉这些字符:

seriesName = ''.join(filter(lambda x: x not in disallowedCharacters, itemSeriesString))

Python相关问答推荐

使用Python进行网页抓取,没有页面

Pandas 群内滚动总和

如何知道标志是否由用户传递或具有默认值?

如何使用bs 4从元素中提取文本

由于瓶颈,Python代码执行太慢-寻求性能优化

如何根据另一列值用字典中的值替换列值

在函数内部使用eval(),将函数的输入作为字符串的一部分

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

如何比较numPy数组中的两个图像以获取它们不同的像素

Django mysql图标不适用于小 case

Gekko:Spring-Mass系统的参数识别

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

Polars:用氨纶的其他部分替换氨纶的部分

如何在solve()之后获得症状上的等式的值

在极性中创建条件累积和

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

旋转多边形而不改变内部空间关系

Matplotlib中的字体权重

如何获取Python synsets列表的第一个内容?

使用Openpyxl从Excel中的折线图更改图表样式