我想在定界符上分割术语。我想输入数字index
,名字输入name
。
我的条件:
The Beehive
12. Bar 821
13. Natives Bar
14. Last Call Bar
15. Scarlet Lounge
16. Linden Room
17. Rooftop 25
我正在使用以下代码:
terms = ['The Beehive', '12. Bar 821', '13. Natives Bar', '14. Last Call Bar', '15. Scarlet Lounge', '16. Linden Room', '17. Rooftop 25']
delim = re.match('\d+\. ', terms)
if delim is None:
print(delim)
else:
index = index[:delim.end()]
name = index[delim.end():]
这无法捕获拆分。我已经通过打印delim进行了测试,但它与任何东西都不匹配。
答案 0 :(得分:2)
与字符串相比,您正在使用列表
import re
terms = ['The Beehive', '12. Bar 821', '13. Natives Bar', '14. Last Call Bar', '15. Scarlet Lounge', '16. Linden Room', '17. Rooftop 25']
delim = re.compile('\d+\.')
for term in terms:
match = delim.search(term)
if match:
print(term[:match.end()]) #index
print(term[match.end():]) #name
答案 1 :(得分:0)
match()
函数仅接受单个字符串,因此您必须分别遍历terms
:
>>> for term in terms:
... match = re.match(r'^(?P<index>(\d+\. )?)(?P<name>.*)$', term) # Return a match object which contains the named groups.
... index, _, name = match.groups() # Unpack the groups.
... # index = match.group('index')
... # name = match.group('name')
... print(index, name)
...
The Beehive
12. Bar 821
13. Natives Bar
14. Last Call Bar
15. Scarlet Lounge
16. Linden Room
17. Rooftop 25
还要注意在正则表达式中使用groups,该表达式将返回带有命名匹配项的Group对象。
关于是否使用r''
前缀,请查看this question或文档摘录:
需要r前缀,使文字成为原始字符串文字[…],因为与常规表达式相比,Python无法识别的普通“煮熟”字符串文字中的转义序列现在导致{{ 1}},并将最终成为
DeprecationWarning
。参见The Backslash Plague。