Tkinter中的正则表达式模式替换

2024-10-04 11:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

披露:代码不是我自己的,只是从互联网上编辑并添加了正则表达式功能

我想在文本中查找数字,并使用Regex将其替换为'number'标记,下面的代码就是这样做的。我使用tkinter从用户那里获取文本

from tkinter import *
root=Tk()
def Reg_ex():
    inputValue=textBox.get("1.0","end-1c")
    A = re.sub("\d+", '<number>',inputValue)
    print(A)
textBox=Text(root, height=40, width=50)
textBox.pack()
buttonCommit=Button(root, height=1, width=10, text="Reg_number", 
                    command= Reg_ex)
buttonCommit.pack()
mainloop()

障碍:如何将打印输出写回文本框供用户查看

目前它在终端中打印,但我希望输出返回到文本区域,以便用户看到原始文本替换为reg_ex处理文本

请帮忙


Tags: 代码用户文本numbertkinter互联网rootreg
1条回答
网友
1楼 · 发布于 2024-10-04 11:33:09

您可以使用Text小部件的replace方法

import tkinter as tk, re

root = tk.Tk() 

textbox = tk.Text(root, height=40, width=50)
textbox.pack()

def replace():
    textbox.replace('1.0', 'end', re.sub("\d+", '<number>', textbox.get('1.0', 'end')))
    
tk.Button(root, width=10, text="replace #'s", command=replace).pack()

root.mainloop()

然而,我认为这样做更有用。这个版本使replace更加动态和健壮,允许您重用它并从外部控制它的行为

import tkinter as tk, re

root = tk.Tk() 

textbox = tk.Text(root, height=40, width=50)
textbox.pack()

def replace(pattern, repl, count=0, flags=0, rng=('1.0', 'end')):
    textbox.replace(*rng, re.sub(pattern, repl, textbox.get(*rng), count, flags))
    
tk.Button(root, width=10, text="replace #'s", command=lambda: replace('\d+', '<number>')).pack()

root.mainloop()

相关问题 更多 >