Python Tkinter文本控件插入逗号分隔值时去除末尾多余逗号
问题根因
循环输出集合元素时,对每一项都统一追加了, 后缀,没有区分最后一个元素,必然会在输出末尾多出多余的逗号和空格。另外原代码中全合规场景下的output_display.insert调用漏传了必填的位置索引参数,运行时会抛出异常,一并修复。
修复方案
不需要手动循环拼接字符串,直接使用Python内置的str.join()方法处理分隔拼接逻辑即可:该方法会自动将分隔符插入到可迭代对象的元素之间,不会在首尾添加多余符号,是这类场景的标准实现方式。
修正后的核心函数代码如下:
# function that checks font def font_name(): if var1.get() == 1: doc = Document(filename) font = set() invalid_fonts = set() VALID_FONT = 'Times New Roman' for para in doc.paragraphs: if para.style.name == 'Normal': for run in para.runs: font.add(run.font.name) if run.font.name != VALID_FONT: invalid_fonts.add(run.font.name) if font == {VALID_FONT}: # 补全原代码缺失的insert位置参数 output_display.insert('end', "All paragraphs are written in Times New Roman font.\n") else: # join自动拼接元素,无末尾多余逗号 output_display.insert( 'end', f"Paragraph written in unrecognised font(s): {', '.join(invalid_fonts)}\n" )
可选优化
集合本身是无序的,如果需要固定的无效字体展示顺序,可以先对集合排序再拼接,写法为', '.join(sorted(invalid_fonts))。
内容的提问来源于stack exchange,提问作者user19224570
相关产品推荐
相关产品推荐

