如何在Python中使用[]拆分字符串

时间:2009-02-05 00:37:28

标签: python string

所以从这个字符串:

“名称[ID]”

我需要这个:

“ID”

我使用了str.split('[]'),但它不起作用。它只需要一个分隔符吗?

9 个答案:

答案 0 :(得分:13)

使用正则表达式:

import re 
s = "name[id]"
re.find(r"\[(.*?)\]", s).group(1) # = 'id'

str.split()需要一个字符串来分割输入。例如:

"i,split,on commas".split(',') # = ['i', 'split', 'on commas']

re模块还允许您通过正则表达式进行拆分,这可能非常有用,我想你应该这样做。

import re
s = "name[id]"

# split by either a '[' or a ']'
re.split('\[|\]', s) # = ['name', 'id', '']

答案 1 :(得分:7)

无论

"name[id]".split('[')[1][:-1] == "id"

"name[id]".split('[')[1].split(']')[0] == "id"

re.search(r'\[(.*?)\]',"name[id]").group(1) == "id"

re.split(r'[\[\]]',"name[id]")[1] == "id"

答案 2 :(得分:3)

是的,分隔符是传递给split的整个字符串参数。因此,您的示例只会拆分一个字符串,例如'name [] id []'。

尝试例如。类似的东西:

'name[id]'.split('[', 1)[-1].split(']', 1)[0]

'name[id]'.split('[', 1)[-1].rstrip(']')

答案 3 :(得分:2)

我不是正则表达式的粉丝,但在像它经常提供最佳解决方案的情况下。

Triptych已经推荐了这个,但我想指出的是?P<>组分配可用于为字典键分配匹配项:

>>> m = re.match(r'.*\[(?P<id>\w+)\]', 'name[id]')
>>> result_dict = m.groupdict()
>>> result_dict
{'id': 'id'}
>>>

答案 4 :(得分:1)

您实际上并不需要正则表达式。 .index()函数和字符串切片可以正常工作。

说我们有:

>>> s = 'name[id]'

然后:

>>> s[s.index('[')+1:s.index(']')]
'id'

对我来说,这很容易理解:“在[并在之前完成]之后开始一个字符。”

答案 5 :(得分:1)

def between_brackets(text):
    return text.partition('[')[2].partition(']')[0]

即使您的字符串不包含[…]构造,这也会起作用,如果您在某个地方只有一个],它会假设最后隐含[字符串。

答案 6 :(得分:0)

我是python的新手,这是一个老问题,但也许这个?

str.split('[')[1].strip(']')

答案 7 :(得分:0)

您可以使用[]获得列表的值。例如,使用下面的URL从URL创建一个列表。

>>> urls = 'http://quotes.toscrape.com/page/1/'

这会生成一个类似于下面的列表。

>>> print( urls.split("/") )
['http:', '', 'quotes.toscrape.com', 'page', '11', '']

如果您只想从此列表中获得“ http”值,该怎么办?您可以这样使用

>>> print(urls.split("/")[0])
http:

或者,如果您想仅从该列表中获取值“ 1”怎么办?您可以这样使用

>>> print(urls.split("/")[-2])
1

答案 8 :(得分:-1)

str.split使用整个参数来分割字符串。尝试:

str.split("[")[1].split("]")[0]