4 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用正則表達(dá)式來替換整個(gè)模式:
re.sub(r'\*(.*?)\*', r'{i}\1{/i}', myvar)
在正則表達(dá)式中:
\*
匹配文字*
(使用兩次)(.*?)
匹配任意數(shù)量的任意(非換行)字符,盡可能少 - 它也在捕獲組中
在替換中:
{i}
和{/i}
都是文字\1
意味著將內(nèi)容放入第一個(gè)(在本例中是唯一的)捕獲組中
這給出:
>>> import re
>>> myvar = "this is an *italicized* substring"
>>> print(re.sub(r'\*(.*?)\*', r'{i}\1{/i}', myvar))
this is an {i}italicized{/i} substring
如果該模式多次出現(xiàn),這也將起作用:
myvar = "this is an *italicized* substring, and here is *another* one"
會(huì)給
this is an {i}italicized{/i} substring, and here is {i}another{/i} one

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
您可以使用re.sub
捕獲組來實(shí)現(xiàn):
import re
txt = "this is an *italicized* substring"
res = re.sub(r"\*([^*]+)\*", "{i}\g<1>{/i}", txt)
將有res:
this is an {i}italicized{/i} substring
這種模式非?;荆核ヅ湟粋€(gè)文字*,然后是字符而不是星號(hào),然后是另一個(gè)文字*。這里的要點(diǎn)是我們使用捕獲組來捕獲單詞部分。
然后,我們只需用我們保存的單詞(通過 訪問\g<1>)替換完整匹配項(xiàng),并用您想要的字符包圍。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
創(chuàng)建一個(gè)循環(huán)進(jìn)行解析并保留一個(gè)計(jì)數(shù)器進(jìn)行跟蹤,每當(dāng)計(jì)數(shù)器為偶數(shù)時(shí),保留第二個(gè)標(biāo)簽并用第一個(gè)標(biāo)簽替換奇數(shù)標(biāo)簽。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以使用 for 循環(huán)并說
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:]
添加回答
舉報(bào)