在Python中搜索并替换字符串中的一些文本?

时间:2014-03-18 00:45:42

标签: python

我想在多行文字中搜索每行是否sentence="后跟一些文字,并以" />'结尾。如果是,请查看sentence="" />'之间的文字是否有",如果是,请将其替换为'。例如,一条这样的行是:

<number="4" word="start" sentence="I said, "start!"" />

我想将其更改为

<number="4" word="start" sentence="I said, 'start!'" />

请注意,此类案例可能会在文本的每一行中多次发生。

我想知道如何在Python中使用正则表达式来实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以向re.sub提供一个callable,告诉它用以下内容替换匹配对象的内容:

s = """<number="4" word="start" sentence="I said, "start!"" />"""

re.sub(r'(?<=sentence=")(.*)(?=" />)', lambda m: m.group().replace('"',"'"), s)
Out[179]: '<number="4" word="start" sentence="I said, \'start!\'" />'