【问题标题】:re.sub adding a newline in pythonre.sub 在 python 中添加换行符
【发布时间】:2013-01-11 22:31:11
【问题描述】:

我有以下文字:

xml = '''
<accessibility_info>
    <accessibility role="captions" available="true" />
</accessibility_info>
<crew_member billing="top"
    <display_name>John Viscount</display_name>
</crew_member>
<products>
    <territory>GB</territory>
</products>'''

我需要删除以下&lt;crew_member&gt; 块。这就是我目前正在做的事情:

clean_xml = re.sub('<crew_member>.*</crew_member>', '', metadata_contents, 
                    flags=re.DOTALL)

但是,它也添加了一个换行符:

<accessibility_info>
    <accessibility role="captions" available="true" />
</accessibility_info>

<products>
    <territory>GB</territory>
</products>

我将如何更改正则表达式以去除换行符,所以它看起来像:

<accessibility_info>
    <accessibility role="captions" available="true" />
</accessibility_info>
<products>
    <territory>GB</territory>
</products>'

【问题讨论】:

  • 只需将\n 添加到匹配字符串的末尾即可。
  • 不是添加换行,而是你删除失败。

标签: python xml regex


【解决方案1】:

试试这个

print re.sub('&lt;crew_member([^\&gt;]*)&gt;.*&lt;/crew_member&gt;\n', '', xml, flags=re.DOTALL)

【讨论】:

    【解决方案2】:

    我知道这有点旧,但我想说新行实际上来自用于将新文本写入文件的方法。如果我使用print(),则会添加一个新行,但如果我使用例如sys.stdout.write(),则不会添加新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2016-08-09
      相关资源
      最近更新 更多