python:用其他字符串替换特定的字符串顺序

时间:2019-03-10 11:18:28

标签: python python-3.x string

我有以下文字:

text = je vais mettre la {\i1}i{\i0}-ème équation, donc {\i1}aᵢ₁x₁+{\i0} … + {\i1}aᵢₙxₙ= bi{\i0} et ensuite, je ne change pas les autres

我想用{\i1}SOMETHING{\i0}替换所有实例\textit{SOMETHING}

Python可以做到吗?

1 个答案:

答案 0 :(得分:1)

我将使用正则表达式:

import re
re.sub(r'{\\i1}(.*?){\\i0}', r'\textit{\1}', text)

一个解释。您必须替换所有与精确模式匹配的子字符串(字符序列):

  • 固定字符串:“ {\ i1}”;
  • 您现在不知道的一些通用文字(SOMETHING);
  • 固定字符串:“ {\ i0}”;

,带有以下文本:“ \ textit {SOMETHING}”,其中SOMETHING与上面的文本完全相同。正则表达式非常适合这种工作。使用它们,您可以搜索文本,将其捕获到变量中,进行替换等。与您的需求相关的语法如下:

  • 文字字符串“ {\ i1}”,需要双反斜杠,因为反斜杠是特殊字符;
  • 点(.)匹配每个字符
  • 开始问题标记(*?)以非贪婪的方式重复先前的模式(点)。与前一个标记结合使用意味着尽可能少的字符;
  • 括号(())将内容模式存储在特殊变量(\1\2等)中,您以后可以在替换文本中引用该变量;
  • 文字字符串“ {\ i0}”。

使用re.sub可以用替换文本替换匹配的模式。我建议您遵循@cglacet的建议并使用regex101测试您的正则表达式:https://regex101.com/r/8vaDFt/1