[英]Replace a substring with two different strings depending on where they are
假設我有一個帶星號的字符串:
myvar = "this is an *italicized* substring"
我想更換*italicized*
用{i}italicized{/i}
的項目我的工作,txt2rpy,但我不知道怎么有兩個不同的子取決於什么命令他們在被替換。
您可以使用正則表達式來替換整個模式:
re.sub(r'\*(.*?)\*', r'{i}\1{/i}', myvar)
在正則表達式中:
\\*
匹配文字*
(使用兩次)(.*?)
匹配任意數量的任何(非換行符)字符,盡可能少 - 它也在捕獲組中在替換中:
{i}
和{/i}
是文字\\1
意味着把什么放在第一個(在這種情況下,只有)捕獲組這給出:
>>> import re
>>> myvar = "this is an *italicized* substring"
>>> print(re.sub(r'\*(.*?)\*', r'{i}\1{/i}', myvar))
this is an {i}italicized{/i} substring
如果模式出現不止一次,這也將起作用:
myvar = "this is an *italicized* substring, and here is *another* one"
會給
this is an {i}italicized{/i} substring, and here is {i}another{/i} one
創建一個用於解析的循環並保持一個計數器進行跟蹤,每當計數器保持第二個標簽並用第一個標簽替換奇數時。
你能不能用一個 for 循環然后說
myvar = "this is an *italicized* substring"
positions = []
for x in range(len(myvar)):
if myvar[x] == "*":
positions.append(x)
inAsteriks = myvar[0:positions[0]] + "{i}" + myvar[positions[0]+1:positions[1]] + "{/i}" + myvar[positions[0]+1:]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.