有一个文本,例如:
[20:00] User: Error [21:00] User: Auth [21:30] User: Params: first second [22:00] User: ErrorNow
我需要得到"first; second"它总是出现在参数之后。我得到的文本是一个字符串,它可以有几个参数,我只需要列表中的最后一个。
而工作版本看起来像这样:
par_ind = text.rfind('Params')
text[par_ind:par_ind+13]
但是主要的缺点是参数的数量可能会改变。告诉我一个更方便的解决办法。我在考虑把字符串转换成字典,但这似乎是个愚蠢的想法。我还能看什么?
乌利希期刊指南:全文可能像这样:
[20:00] User: Error [21:00] User: Params: first second [22:00] User: ErrorNow [20:00] User: Error [21:00] User: Auth [21:30] User: Params: first third [22:00] User: Error [21:00] User: Auth [21:30] User: Params: first fourth [22:00] User: ErrorNow [20:00] User: Error [21:00] User: Auth [21:30] User: Error: first fifth [22:00] User: Error [21:00] User: Auth [21:30] User: Params: first fifth [22:00] User: ErrorNow
我需要最后一个"Params"在列表中,在本例中是"first fifth">
这是使用正则表达式的好时机:
>>> import re
>>> text = """[20:00] User: Error [21:00] User: Auth [21:30] User: Params: first second [22:00] User: ErrorNow"""
>>> match = re.search(r'Params: (?P<params>[^[]+)[d', text)
>>> match.group('params')
'first second '
(您可能想要去掉尾随空格:match.group('params').strip()
可以工作,或者相应地调整正则表达式。)