【问题标题】:If specific text founded remove text between specific text in python如果创建特定文本删除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:

【问题讨论】:

    标签: python string text between


    【解决方案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”,并且只删除

      之间的部分,但
      必须保留行尾
    猜你喜欢
    • 2022-11-25
    • 2017-09-24
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多