我有一个字符串列表,这些字符串具有可变构造,但字符序列用方括号括起来。我想只提取方括号括起来的序列。每个字符串只有一个方括号实例,这简化了过程。
我正在努力以优雅的方式这样做,这显然是Python的大型字符串库的一个简单问题。
这样做的简单表达是什么?
答案 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