11

例如,我需要两个方括号之间的所有内容。文件 1

[Home sapiens]
[Mus musculus 1]
[virus 1 [isolated from china]]

所以考虑到上面的例子,我需要第一个和最后一个方括号之间的所有内容。

4

3 回答 3

20

您可以使用贪婪的正则表达式:

re.search(r'\[(.*)\]', your_string).group(1)
于 2013-02-05T20:32:44.113 回答
19

正则表达式是最灵活的选择。

对于另一种方法,您可以尝试 string 的partitionrpartition方法:

>>> s = "[virus 1 [isolated from china]]"
>>> s.partition('[')[-1].rpartition(']')[0]
'virus 1 [isolated from china]'
于 2013-02-05T20:42:05.380 回答
2

鉴于您的示例输入,看起来每一行都以括号开头和结尾。在这种情况下,忘记正则表达式,这是微不足道的:

for line in whatever:
    contents = line.strip()[1:-1]

strip如果您的行源将换行符留在其中,或者输入中的右括号后有不可见的空格,我已经添加了。如果没有必要,请忽略它。)

于 2013-02-05T22:39:30.497 回答