[英]Replace special characters with words in python
For the following string:对于以下字符串:
s = The \\r\\n sun shines, that's fine [latex]not\\r\\nt for \\r\\n everyone[/latex] and if it rains, \\r\\nit Will Be better.
. .
If I want to replace \\n\\r
by ' '
between [latex]
and [/latex]
, I can use:如果我想用
[latex]
和[/latex]
之间的' '
替换\\n\\r
,我可以使用:
re.sub("\[latex\][^]]*\[/latex\]", lambda x:x.group(0).replace('\r\n',' '), s)
which works fine.这工作正常。
However, if the input is:但是,如果输入是:
s = some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}}\r\n{{\rm{dA}} = {\rm{wdy}}:}\\\r\n{{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}}\r\n\\end{array}\\][/latex]\r\n
and I use the same expression, nothing gets replaced.我使用相同的表达方式,没有任何东西被替换。 Any idea what I'm doing wrong ?
知道我做错了什么吗?
The problem is due to presence of ]
before [/latex]
in second input.问题是由于在第二个输入中
[/latex]
之前存在]
。 Also better to use raw strings for your input and regex.最好将原始字符串用于输入和正则表达式。
You can use this regex for search:您可以使用此正则表达式进行搜索:
\[latex\].*?\[/latex\]
Code:代码:
>>> s = r"some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}}\r\n{{\rm{dA}} = {\rm{wdy}}:}\\\r\n{{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}}\r\n\\end{array}\\][/latex]\r\n"
>>> print re.sub(r"\[latex\].*?\[/latex\]", lambda x:x.group(0).replace(r'\r\n', ' '), s)
some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}} {{\rm{dA}} = {\rm{wdy}}:}\\ {{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}} \\end{array}\\][/latex]\r\n
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.