【问题标题】:python .replace() regex [duplicate]python .replace() 正则表达式 [重复]
【发布时间】:2012-07-13 14:57:01
【问题描述】:

我正在尝试抓取'</html>' 标记之后的所有内容并将其删除,但我的代码似乎没有做任何事情。 .replace() 不支持正则表达式吗?

z.write(article.replace('</html>.+', '</html>'))

【问题讨论】:

  • 警告:使用正则表达式解析 HTML leads to madness.
  • 我在关闭 html 标记后有一堆垃圾,我只想删除它。
  • 但是,如果您的 HTML 中有一个带引号的字符串、注释、JavaScript 或 CDATA,其中包含 &lt;/html&gt;,该怎么办?或者如果最后的垃圾本身有&lt;/html&gt; 怎么办?除非你能保证这些都不会发生,否则你要么需要完全解析 HTML,要么有其他方法知道你有多少数据(例如 Content-Length: HTTP 标头)。
  • 这些都不是因素。

标签: python regex


【解决方案1】:

没有。 Python 中的正则表达式由re 模块处理。

article = re.sub(r'(?is)</html>.+', '</html>', article)

一般:

text_after = re.sub(regex_search_term, regex_replacement, text_before)

【讨论】:

  • 如何将 re 模型应用于我的“文章”变量?
  • 我尝试了以下方法无济于事z.write(re.sub(r'&lt;/html&gt;.+', r'&lt;/html&gt;', article))
  • 标签不是小写的,还是后面跟着'\n'?您可以使其不区分大小写((?i) 标志)并使.r'(?is)&lt;/html&gt;.+' 匹配换行符((?s) 标志)。
  • 更多信息对初学者来说会很好
  • 使用标志会更具可读性,即添加标志=re.DOTALL | re.IGNORECASE 作为最后一个参数是模式中的 (?is)。
【解决方案2】:

您可以将re 模块用于正则表达式,但是对于您想要的,正则表达式可能有点矫枉过正。我可能会尝试类似的东西

z.write(article[:article.index("</html>") + 7]

这更简洁,并且应该比基于正则表达式的解决方案快得多。

【讨论】:

  • 不太干净;你必须硬编码“
【解决方案3】:

要使用正则表达式替换文本,请使用re.sub 函数:

sub(pattern, repl, string[, count, flags])

它将用string 传递的文本替换pattern 的非重复实例。例如,如果您需要分析匹配以提取有关特定组捕获的信息,则可以将函数传递给 string 参数。 more info here.

示例

>>> import re
>>> re.sub(r'a', 'b', 'banana')
'bbnbnb'

>>> re.sub(r'/\d+', '/{id}', '/andre/23/abobora/43435')
'/andre/{id}/abobora/{id}'

【讨论】:

    【解决方案4】:

    对于这种特殊情况,如果使用re 模块是多余的,那么使用split(或rsplit)方法怎么样

    se='</html>'
    z.write(article.split(se)[0]+se)
    

    例如,

    #!/usr/bin/python
    
    article='''<html>Larala
    Ponta Monta 
    </html>Kurimon
    Waff Moff
    '''
    z=open('out.txt','w')
    
    se='</html>'
    z.write(article.split(se)[0]+se)
    

    out.txt 输出为

    <html>Larala
    Ponta Monta 
    </html>
    

    【讨论】:

      猜你喜欢
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2016-11-16
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多