Python:根据位置、方括号和圆括号从列表中获取每个元素

2024-05-14 22:49:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下一张单子:

a = ["[Test](Link)", "[Test2](link2)", "[test3](link3)"]

我想让它以这种方式表现出来:

b1 = Test
b2 = Link
b3 = test3
b4 = link2
b5 = test3
b6 = link3

我怎么能做这种事?你知道吗

我试着加入这个名单,用re来得到我想要的,但我失败了


Tags: test方式linkb2b1单子b3b4
3条回答
>>> a = ["[Test](Link)", "[Test2](link2)", "[test3](link3)"]
>>> b1,b2,b3,b4,b5,b6 = (y.strip('[]()') for x in a for y in x.split(']'))
>>> print (b1,b2,b3,b4,b5,b6)
Test Link Test2 link2 test3 link3
import re
a = ["[Test](Link)", "[Test2](link2)", "[test3](link3)"]
for s in a:
    m = re.match('(\[.*\])(\(.*\))$', s)
    print(m.group(1))
    print(m.group(2))

结果:

[Test]
(Link)
[Test2]
(link2)
[test3]
(link3)

在列表中使用join之后,可以使用re.findall

>>> re.findall(r'(\[.*?\]|\(.*?\))', ''.join(a))
['[Test]', '(Link)', '[Test2]', '(link2)', '[test3]', '(link3)']

正则表达式解释:

(                       # Matching group 1
    \[.*?\]             # Matches non-greedily in between brackets
    |                   # OR
    \(.*?\)             # Matches non-greedily between parenthesis
)                       # End of matching group

相关问题 更多 >

    热门问题