所以我有下一个列表:
a = ["[Test](Link)", "[Test2](link2)", "[test3](link3)"]
我想以这种方式显示它:
b1 = Test
b2 = Link
b3 = test3
b4 = link2
b5 = test3
b6 = link3
我该怎么做?
我尝试加入列表并使用re获得我想要的东西,但失败了
答案 0 :(得分:1)
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)
答案 1 :(得分:1)
在列表上使用 re.findall
后,您可以使用 join
:
>>> 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
答案 2 :(得分:0)
您的原始问题看起来像您希望每个值都由一个新变量表示。您可以使用globals()
动态创建新变量。
count = 0
g = globals()
for i in a:
f = i.strip('[)').split('](')
count += 1
g['b' + str(count)] = f[0]
print ('b' + str(count) + ' = ' + f[0])
count += 1
g['b' + str(count)] = f[1]
print ('b' + str(count) + ' = ' + f[1])
b1 = Test
b2 = Link
b3 = Test2
b4 = link2
b5 = test3
b6 = link3
下面是动态创建的变量的输出。
In [5]: b1
Out[5]: 'Test'
In [6]: b2
Out[6]: 'Link'
In [7]: b3
Out[7]: 'Test2'
In [8]: b4
Out[8]: 'link2'
In [9]: b5
Out[9]: 'test3'
In [10]: b6
Out[10]: 'link3'
答案 3 :(得分:0)
>>> 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