Col*_*lin 3 python regex substring jython
我有一个字符串"MenuItem {Open source}".
如何Open source从字符串中获取字符串?
例如
str1 = "MenuItem {Open source}"
Run Code Online (Sandbox Code Playgroud)
执行一些操作将字符串2设置为...
print str2 # 'Open source'
Run Code Online (Sandbox Code Playgroud)
我怎么能用python或jython实现这个呢?
你可以使用正则表达式来获取它.
>>> import re
>>> str1 = "MenuItem {Open source}"
>>> re.search(r'{(.*)}', str1).group(1)
'Open source'
Run Code Online (Sandbox Code Playgroud)
您也可以通过在{和}分隔符上拆分字符串来获取它(这里我使用str.rsplit而不是str.split确保它在最右边的匹配处拆分):
>>> str1.rsplit('{')[1].rsplit('}')[0]
'Open source'
Run Code Online (Sandbox Code Playgroud)
提取子字符串: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"
Run Code Online (Sandbox Code Playgroud)
因此,在您的示例中,您将需要str2 = str1[10:21] = "Open Source".
当然,这是假设它始终是开源和MenuItem ......
相反,你可以使用find:
int find(sub [,start[,end]])
Run Code Online (Sandbox Code Playgroud)
返回字符串中第一次出现的数字位置.如果未找到sub,则返回-1.
x = s.find("Gator") #x = 3
x = s.find("gator") #x = -1
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用str1.find("{")获得第一个支撑,并str1.find("}")获得第二个支撑.
或者一个:
str2 = str1[str1.find("{"):str1.find("}")]
Run Code Online (Sandbox Code Playgroud)
未经测试的代码,您可能需要在某处添加+1,但理论上应该可以使用,或者至少让您走上正确的轨道;)