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

How to delete a textline with matched text in QPlainTextEdit?

以下行在 A QPlainTextEdit 中:

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

line 2 s44 grade

借助行变量(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)