从字符串列表中,仅提取括号内的字符

时间:2015-11-25 18:28:58

标签: python

我有一个字符串列表,这些字符串具有可变构造,但字符序列用方括号括起来。我想只提取方括号括起来的序列。每个字符串只有一个方括号实例,这简化了过程。

我正在努力以优雅的方式这样做,这显然是Python的大型字符串库的一个简单问题。

这样做的简单表达是什么?

3 个答案:

答案 0 :(得分:3)

检查正则表达式,“重新”

这样的事情可以解决问题

import re

s = "hello_from_adele[this_is_the_string_i_am_looking_for]this_is_not_it"
match = re.search(r"\[([A-Za-z0-9_]+)\]", s)
print match.group(1)

如果您提供示例,我们可以更具体

答案 1 :(得分:2)

您甚至不需要re来执行此操作:

In [11]: strng = "This is some text [that has brackets] followed by more text"

In [12]: strng[strng.index("[")+1:strng.index("]")]
Out[12]: 'that has brackets'

这使用here返回括号内的字符。 string slicing返回其参数的从0开始的位置。由于我们不希望在开头包含[,我们添加1.切片的第二个参数是停止位置,但在返回的子字符串中未包含,所以我们不需要添加任何内容。

答案 2 :(得分:1)

如果您因任何原因不想使用正则表达式,则应该很容易使用字符串拆分,因为您确保只有一个[]的实例。

s = "some[string]to check"

_, midright = s.split("[")
target, _ = midright.split("]")

target = s.split("[")[1].split("]")[0]  # ewww