我試圖在串列前面放一個“-”。例如:
注意:這里的 V 代表我的串列項開頭和結尾的識別符號。(因為串列是長文本的一部分)。
V
Apple
Banana
Orange fruit
V
到
V
- Apple
- Banana
- Orange fruit
V
我設法通過這樣做來匹配串列
V\n([A-Za-z] ( [A-Za-z] )*)\r\n(([A-Za-z] ( [A-Za-z] )*\r\n)*)\nV
但我在更換價值方面遇到了問題。我正在考慮這種方法
V- \1\n- \2\nV
但這只會將縮進放在第一項上,并基本上洗掉串列的其余部分。像這樣的東西:
V
- Apple
-
V
我正在使用 re.sub,順便說一句
uj5u.com熱心網友回復:
你可以做:
import re
txt='''\
Y
dog
Y
V
Apple
Banana
Orange fruit
V'''
def rfunc(m):
return m.group(1) '\n'.join([f'- {l}' for l in m.group(2).splitlines()]) m.group(3)
print(
re.sub(r'(^V$\n)([\s\S]*?)(\n^V$)', rfunc, txt, flags=re.M)
)
印刷:
Y
dog
Y
V
- Apple
- Banana
- Orange fruit
V
uj5u.com熱心網友回復:
您可以使用替換功能:
import re
s = 'V\nApple\nBanana\nOrange fruit\nV'
r = re.sub('(?<=\n)[a-zA-Z]{1}', lambda x:v if (v:=x.group()) == 'V' else f'-{v}', s)
print(r)
輸出:
V
-Apple
-Banana
-Orange fruit
V
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361850.html
