如何在 QPlainTextEdit 中删除带有匹配文本的文本行?

问题描述

下面几行在 A QPlainTextEdit 中:

enter image description here

我想用行变量帮助删除匹配的行。 比如我要删除

line 2 s44 等级

借助行变量(line = "line 2")

我可以使用以下代码删除特定文本:

item = "line 2"
text = self.project_length_lanes_plainedit.toPlainText()
text = text.replace(item,'')
_list = text.split()
text = '\n'.join(_list)
self.project_length_lanes_plainedit.setPlainText(text)

但我想删除整行。我该怎么做?

解决方法

您有 2 个基本选项:

  1. 使用正则表达式匹配替换中的整行,则不需要拆分行
  2. 首先拆分为列表并从列表中删除匹配的行,最后像您一样加入列表

编辑:

import re

x = """
line1: abc
line2: def
line3: ghi
"""

print("regex:")
print(re.sub(r'line2.*','',x))  # note: this leaves empty line
print("regex2:")
print(re.sub(r'line2.*\n',x))

print("list:")
print('\n'.join([line for line in x.split('\n') if "line2" not in line]))

,

我尝试如下工作:

    item = "line 2"
    text = self.project_length_lanes_plainedit.toPlainText()
    for l in text.split('\n'):
        if item in l:
            text = text.replace(l,'')
            _list = text.split('\n')
            _list = [ i for i in _list if i ]
            text = '\n'.join(_list)
            self.project_length_lanes_plainedit.setPlainText(text)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...