深渊心岑@clown 2023-04-23 02:06 采纳率: 63.6%
浏览 28
已结题

python字符串匹配增删改查

废话不多说,先看代码:
先说代码出现的问题,如果相似的单词出现在前边或者任意位置,那么括号没有加入到指定的单词上,而是会乱插入,
那么改如何解决此问题,我想要该单词是独一无二的,不被相似单词影响。

import ttkbootstrap as ttk
from ttkbootstrap.constants import *
import re

l_str='('
r_str=')'
hjfj1 = 'beautiful'
hjfj2 = 'a beautiful girl'

ckou0 = ttk.Window(
    title='''单词测试''',
    size=(500, 500),  # 窗口的大小
    position=(300, 100),  # 窗口位置
    resizable=(False, False),  # 让窗口不可更改大小
    alpha=0.85,  # 窗口透明度
    #iconphoto=r'res\at.ico'
)
showtag_text1 = ttk.Text(ckou0)
showtag_text1.place(x=0, y=0, width=300,height=50)


def a_hjfj1():# 插入字符
    ss = showtag_text1.get('1.0', END)
    if hjfj1 not in ss:
        showtag_text1.insert('insert', hjfj1)
        showtag_text1.insert('insert', ',')
    else:
        ss1 = showtag_text1.get('1.0', END)
        l_over = re.sub(rf'\b{hjfj1},', '', ss1)
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())
        pass


def hjfj1_add():  # 加括号函数
    '''加权重函数'''
    try:
        hjfj1_bt_text = showtag_text1.get('1.0', END)
        l_over = re.sub(rf'\b({hjfj1})\b', f'{l_str}\\1{r_str}', hjfj1_bt_text)
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())

    except:
        pass


def hjfj1_reduce():# 去括号函数
    '''减权重函数'''
    try:
        hjfj1_bt_text = showtag_text1.get('1.0', END)
        hjfj1_mix = l_str + hjfj1 + r_str
        s = hjfj1_bt_text.index(hjfj1_mix)
        l = list(hjfj1_bt_text)  # 把字符串拆分为列表,列表里面全部是单个字母的字符
        l1 = l
        del l1[s]
        del l1[s + len(hjfj1_mix) - 2]
        ss = len(hjfj1_mix) + 1
        l.insert(s + ss, '')
        l_over = ''.join(l)  # 删改完成列表后重新加入为字符串
        l_over.strip()
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())
    except:
        pass

def a_hjfj2():
    ss = showtag_text1.get('1.0', END)
    if hjfj2 not in ss:
        showtag_text1.insert('insert', hjfj2)
        showtag_text1.insert('insert', ',')
    else:
        ss1 = showtag_text1.get('1.0', END)
        l_over = re.sub(rf'\b{hjfj2},', '', ss1)
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())
        pass

def hjfj2_add():
    global hjfj2, l_str, r_str
    try:
        hjfj1_bt_text = showtag_text1.get('1.0', END)
        l_over = re.sub(rf'\b({hjfj2})\b', f'{l_str}\\1{r_str}', hjfj1_bt_text)
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())
    except:
        pass

def hjfj2_reduce():
    '''减权重函数'''
    try:
        hjfj1_bt_text = showtag_text1.get('1.0', END)
        hjfj1_mix = l_str + hjfj2 + r_str
        s = hjfj1_bt_text.index(hjfj1_mix)
        l = list(hjfj1_bt_text)  # 把字符串拆分为列表,列表里面全部是单个字母的字符
        l1 = l
        del l1[s]
        del l1[s + len(hjfj1_mix) - 2]
        ss = len(hjfj1_mix) + 1
        l.insert(s + ss, '')
        l_over = ''.join(l)  # 删改完成列表后重新加入为字符串
        l_over.strip()
        showtag_text1.delete('0.0', END)
        showtag_text1.insert('insert', l_over.strip())
    except:
        pass

ttk.Button(ckou0, text='美丽的', bootstyle=(WARNING, OUTLINE), command=a_hjfj1).place(x=35, y=105)
ttk.Button(ckou0, text='一个美丽的女孩', bootstyle=(WARNING, OUTLINE), command=a_hjfj2).place(x=35, y=140)
ttk.Button(ckou0, text='+', command=hjfj1_add, width=1.5).place(x=100.5, y=105)  # 和按钮相差x85.5坐标
ttk.Button(ckou0, text='-', command=hjfj1_reduce, width=1.5).place(x=0, y=105)  # 和按钮相差x15坐标

ckou0.mainloop()
  • 写回答

3条回答 默认 最新

  • 文盲老顾 WEB应用领新星创作者 2023-04-23 07:13
    关注

    ???为什么替换部分你要写成正则?我不记得这么告诉你的啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?
  • ¥15 构建工单的总账影响在哪里查询或修改
  • ¥15 三个简单项目写完之后有重赏之后联系我
  • ¥15 python报内存不能read错误
  • ¥15 hexo安装这种情况怎么办