如果创建特定文本删除python中特定文本之间的文本

Posted

技术标签:

【中文标题】如果创建特定文本删除python中特定文本之间的文本【英文标题】:If specific text founded remove text between specific text in python 【发布时间】:2017-05-16 21:45:14 【问题描述】:

我有一个包含很多行的数据,如下所示:

<br>&emsp;&emsp;<font size="4">&bull;</font>&emsp; Closed Point 3<br>&emsp;&emsp;<font size="4">&bull;</font>&emsp; Opened Shape<br>

我想在行中搜索单词“Point”,如果找到它只删除这部分:

<br>&emsp;&emsp;<font size="4">&bull;</font>&emsp; Closed Point 3

所以 它只会离开:

<br>&emsp;&emsp;<font size="4">&bull;</font>&emsp; Opened Shape<br>

我被困在这里:

with open(input, 'r') as f:
    lines = f.readlines()
    with open(output, 'w') as w:
        for line in lines:
            if 'Point' in line:

【问题讨论】:

【参考方案1】:

你应该调查 string.replace;这是一个描述:

string.replace(s, old, new[, maxreplace])

返回字符串 s 的副本,其中所有出现的子字符串 old 都替换为 new。如果给出了可选参数 maxreplace,则替换第一个 maxreplace 出现。

并考虑如果“new”是一个空字符串会发生什么。

【讨论】:

如果我没有“封闭点”而是“开放点”怎么办?我应该将许多 ifs 替换为空“”吗? 如果您希望更改的文本不同,则可能需要正则表达式替换。在这种情况下,您可以阅读re.sub(再次将repl 参数设置为空字符串)。【参考方案2】:

只看字符串替换方法。

https://www.tutorialspoint.com/python/string_replace.htm

line = line.replace('Closed Point 3','Opened Shape')

你甚至不需要 if 语句,因为如果没有找到匹配,替换函数将返回原始字符串。

【讨论】:

但我有这样一行:   封闭点 3   打开形状 他的输入字符串已经有“Opened Shape”(需要向右滚动)。 我想我需要找到一种方法来删除 和 之间的一些文本,但最后的 必须保留。我不认为替换功能会有所帮助。 啊,是的,我误读了长线...但是,如果您想删除文本,只需替换为空字符串...正如马克的回答所建议的“line = line.replace ('闭点 3','')" 是的,但我想替换每一行(我有很多),其中包含单词“Point”,并且只删除 和 之间的部分,但 必须保留行尾

以上是关于如果创建特定文本删除python中特定文本之间的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从包装的文本单元格中提取特定的文本行?

从特定字符开始删除所有文本

Python如何删除文本文件中特定字符串之后或之前的特定行数

在python中删除文本文件的特定模式[重复]

Python - 在其他两个特定字符之间的字符串中提取文本?

Python:读取文件时如何忽略两个特定单词之间的文本?