我找不到解決方案,所以我在這里問。我有一個由幾行組成的字串,在該字串中我想將一個數字精確地增加一個。例如:
[CENTER]
[FONT=Courier New][COLOR=#00ffff][B][U][SIZE=4]{title}[/SIZE][/U][/B][/COLOR][/FONT]
[IMG]{cover}[/IMG]
[IMG]IMAGE[/IMG][/CENTER]
[QUOTE]
{description_de}
[/QUOTE]
[CENTER]
[IMG]IMAGE[/IMG]
[B]Duration: [/B]~5 min
[B]Genre: [/B]Action
[B]Subgenre: [/B]Mystery, Scifi
[B]Language: [/B]English
[B]Subtitles: [/B]German
[B]Episodes: [/B]01/5
[IMG]IMAGE[/IMG]
[spoiler]
[spoiler=720p]
[CODE=rich][color=Turquoise]
{mediaInfo1}
[/color][/code]
[/spoiler]
[spoiler=1080p]
[CODE=rich][color=Turquoise]
{mediaInfo2}
[/color][/code]
[/spoiler]
[/spoiler]
[hide]
[IMG]IMAGE[/IMG]
[/hide]
[/CENTER]
我從請求中獲取此字串,我想將劇集增加 1。所以從 01/5 到 02/5。
使這成為可能的最佳方法是什么?
我試圖通過正則運算式解決這個問題,但失敗了。
uj5u.com熱心網友回復:
假設您要更改的數字總是在給定模式之后,例如"Episodes: [/B]",您可以使用以下代碼:
def increment_episode_num(request_string, episode_pattern="Episodes: [/B]"):
idx = req_str.find(episode_pattern) len(episode_pattern)
episode_count = int(request_string[idx:idx 2])
return request_string[:idx] f"{(episode_count 1):0>2}" request_string[idx 2:]
例如,給定您的字串:
req_str = """[B]Duration: [/B]~5 min
[B]Genre: [/B]Action
[B]Subgenre: [/B]Mystery, Scifi
[B]Language: [/B]English
[B]Subtitles: [/B]German
[B]Episodes: [/B]01/5
"""
res = increment_episode_num(req_str)
print(res)
這給你想要的輸出:
[B]Duration: [/B]~5 min
[B]Genre: [/B]Action
[B]Subgenre: [/B]Mystery, Scifi
[B]Language: [/B]English
[B]Subtitles: [/B]German
[B]Episodes: [/B]02/5
uj5u.com熱心網友回復:
正如@Barmar 在評論中所建議的,并遵循re檔案中的示例,還格式化為具有正確數量的零作為填充:
pattern = r"(?<=Episodes: \[/B\])[\d] ?(?=/\d)"
def add_one(matchobj):
number = str(int(matchobj.group(0)) 1)
return "{0:0>2}".format(number)
re.sub(pattern, add_one, request)
該模式使用向前看和向后看僅捕獲與劇集相對應的數字,并且無論格式為 01/5 還是 1/5 都應該有效,但始終以 01/5 格式回傳。當然,您可以擴展該函式,使其能夠識別格式,甚至可以添加不同的數字,而不僅僅是 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535273.html
標籤:Python细绳寻找增量
