如何子串字符串?

时间:2010-12-09 10:16:39

标签: python regex substring jython

我有一个字符串"MenuItem {Open source}"

如何从字符串中获取字符串Open source

e.g。

str1 = "MenuItem {Open source}"

执行一些操作以将字符串2设置为...

print str2  # 'Open source'

如何使用python或jython实现此目的?

3 个答案:

答案 0 :(得分:9)

您可以使用regular expression来获取它。

>>> import re
>>> str1 = "MenuItem {Open source}"
>>> re.search(r'{(.*)}', str1).group(1)
'Open source'

您也可以通过在{}分隔符上分割字符串来获取它(此处我使用str.rsplit而非str.split以确保它在右侧分割最匹配):

>>> str1.rsplit('{')[1].rsplit('}')[0]
'Open source'

答案 1 :(得分:5)

提取子字符串:Python中的字符串可以像数组一样下标:s[4] = 'a'。与IDL一样,可以使用切片表示法指定索引,即两个以冒号分隔的索引。这将返回包含字符index1到index2-1的子字符串。指数也可以是负数,在这种情况下,它们从右边计数,即-1是最后一个字符。因此可以像

一样提取子串
  s = "Go Gators! Come on Gators!"

  x = s[3:9] #x = "Gators"
  x = s[:2] #x = "Go"
  x = s[19:] #x = "Gators!"
  x = s[-7:-2] #x = "Gator"

因此,在您的示例中,您需要str2 = str1[10:21] = "Open Source"

当然,这是假设它始终是开源和MenuItem ......

相反,您可以使用find

int find(sub [,start[,end]])

返回字符串中第一次出现的数字位置。如果未找到sub,则返回-1。

  x = s.find("Gator") #x = 3
  x = s.find("gator") #x = -1

所以你可以使用str1.find("{")获得第一个大括号,str1.find("}")来获得第二个大括号。

或在一个中:

str2 = str1[str1.find("{"):str1.find("}")]

未经测试的代码,您可能需要在某处添加+1,但理论上应该可以使用,或者至少让您走上正确的轨道;)

答案 2 :(得分:0)

var1 = "MenuItem {Open source}"
var2 = var1.find('{')
var3 = var1.find('}')
ans = var1[var2+1: var3]
print ans

你有字符串“开源”!!!