我有一个字符串"MenuItem {Open source}"
。
如何从字符串中获取字符串Open source
?
e.g。
str1 = "MenuItem {Open source}"
执行一些操作以将字符串2设置为...
print str2 # 'Open source'
如何使用python或jython实现此目的?
答案 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
你有字符串“开源”!!!