【问题标题】:Replace ":" in tags替换标签中的“:”
【发布时间】:2017-10-17 11:10:43
【问题描述】:

我有字符串:

<x:tagname x:attribute="value">test content with : symbols</x:tagname>

我需要结果:

<x--tagname x--attribute="value">test content with : symbols</x--tagname>

如何替换python标签中的“:”?

【问题讨论】:

  • 如果您是 understand what the XML syntax with a colon means,那么您就不会尝试在 XML 标记名称中替换 :。另请参阅How does XPath deal with XML namespaces?
  • 我投票 将此问题作为离题结束,因为它受到 XY problem 的影响,并要求进行无意义的破解,而不是实际问题的真正解决方案.
  • 我的任务 - 不适用于 xml。我需要处理包含 xml 的文本,并将其传递下去。如果您无法提供帮助,请不要关闭问题。我会找到解决方案并发布它。

标签: python regex xml


【解决方案1】:

我不确定python语法,但你可以使用以下正则表达式:

(?:<|\G)[^>:]*\K:

这匹配标签内的所有':'。然后用“--”替换所有出现的地方。

这是如何工作的

'\G' 匹配当前轮匹配的起点。因此,通过断言或匹配''。 '\K' 有效地转储了刚刚使用的主题部分,因此它不包含在替换中。

【讨论】:

  • 1) 这不符合要求。 2) python re模块中没有回溯控制动词。
  • @CasimiretHippolyte 你说得对,我把它弄反了。现在编辑:)
【解决方案2】:

您可以使用replace

代码:

string = '<x:tagname x:attribute="value">test content with : symbols</x:tagname>'

stringx = string.replace(':', '--')

print(stringx)

输出:

<x--tagname x--attribute="value">test content with -- symbols</x--tagname>

【讨论】:

  • 这行不通,因为他需要避免在标签之外进行编辑。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
相关资源
最近更新 更多