如何在其他一些字符中替换多次出现的字符
How to replace multiple occurrences of character when inside some other characters
我有以下字符串:
someTxt="ABC -type X | aas < ISCO | ABB | TTI > kjhkjh"
我想把它转换成下面这样:
ABC -type X | aas < ISCO \| ABB \| TTI > kjhkjh
我正在尝试分两步完成(也许一步完成更好!),如下:
htmlTagTxt = re.sub(r'\<(.*)\>', r'< >', someTxt)
print (htmlTagTxt)
这给出了以下输出:
ABC -type X | aas < ISCO | ABB | TTI > kjhkjh
现在我想在'|'之前添加反斜杠字符。
cleanedHtmlTagTxt = re.sub(r'(\|)',, r'\', htmlTagTxt)
print (cleanedHtmlTagTxt)
这给出了以下输出:
ABC -type X \| aas < ISCO \| ABB \| TTI > kjhkjh
但是,我只想在“|”的位置添加一个反斜杠字符在 < 和 > 里面 所以第一个 '|'不应更改“-type X”之后的字符。
不幸的是,我不明白指示这一点所需的语法。有人可以解释如何执行此操作及其背后的一些逻辑吗?
IIUC,您可以使用 html escape and regex escape:
的组合
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
我有以下字符串:
someTxt="ABC -type X | aas < ISCO | ABB | TTI > kjhkjh"
我想把它转换成下面这样:
ABC -type X | aas < ISCO \| ABB \| TTI > kjhkjh
我正在尝试分两步完成(也许一步完成更好!),如下:
htmlTagTxt = re.sub(r'\<(.*)\>', r'< >', someTxt)
print (htmlTagTxt)
这给出了以下输出:
ABC -type X | aas < ISCO | ABB | TTI > kjhkjh
现在我想在'|'之前添加反斜杠字符。
cleanedHtmlTagTxt = re.sub(r'(\|)',, r'\', htmlTagTxt)
print (cleanedHtmlTagTxt)
这给出了以下输出:
ABC -type X \| aas < ISCO \| ABB \| TTI > kjhkjh
但是,我只想在“|”的位置添加一个反斜杠字符在 < 和 > 里面 所以第一个 '|'不应更改“-type X”之后的字符。 不幸的是,我不明白指示这一点所需的语法。有人可以解释如何执行此操作及其背后的一些逻辑吗?
IIUC,您可以使用 html escape and regex escape:
的组合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