Python 如何在某些其他字符内替换多次出现的字符
我有以下字符串:Python 如何在某些其他字符内替换多次出现的字符,python,re,Python,Re,我有以下字符串: someTxt="ABC -type X | aas < ISCO | ABB | TTI > kjhkjh" 我试着分两步来做这件事(也许一步可以做得更好!),如下所示: htmlTagTxt = re.sub(r'\<(.*)\>', r'< \1 >', someTxt) print (htmlTagTxt) 现在我想在“|”字符之前添加反斜杠 cleanedHtmlTagTxt = re.sub
someTxt="ABC -type X | aas < ISCO | ABB | TTI > kjhkjh"
我试着分两步来做这件事(也许一步可以做得更好!),如下所示:
htmlTagTxt = re.sub(r'\<(.*)\>', r'< \1 >', someTxt)
print (htmlTagTxt)
现在我想在“|”字符之前添加反斜杠
cleanedHtmlTagTxt = re.sub(r'(\|)',, r'\\\1', htmlTagTxt)
print (cleanedHtmlTagTxt)
这将提供以下输出:
ABC -type X | aas < ISCO | ABB | TTI > kjhkjh
ABC -type X \| aas < ISCO \| ABB \| TTI > kjhkjh
但是,我只想在“|”字符位于不幸的是,我不理解指出这一点所需的语法。有人能解释一下如何做到这一点以及背后的一些逻辑吗?IIUC,您可以使用html和正则表达式的组合:
ABC -type X \| aas < ISCO \| ABB \| TTI > kjhkjh
from html import escape
import re
someTxt = "ABC -type X | aas < ISCO | ABB | TTI > kjhkjh"
def replacement(match):
"""This function escapes every | inside the string"""
return re.sub(r"\|", re.escape("|"), match.group())
# change the text inside < and > using replacement
newText = re.sub(r"<.*?>", replacement, someTxt)
# use html escape to convert < > to < >
result = escape(newText)
print(result)
ABC -type X | aas < ISCO \| ABB \| TTI > kjhkjh