如何截取字符串?
我有一个字符串 "MenuItem {Open source}"
。
我该怎么从这个字符串中提取出 Open source
呢?
比如说:
str1 = "MenuItem {Open source}"
执行一些操作,把第二个字符串设置为...
print str2 # 'Open source'
我该如何用 Python 或 Jython 来实现这个呢?
3 个回答
0
var1 = "MenuItem {Open source}"
var2 = var1.find('{')
var3 = var1.find('}')
ans = var1[var2+1: var3]
print ans
你看到这个字符串“开源”了吗!!!
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"
。
当然,这是假设它总是“Open Source”和“MenuItem”...
另外,你可以使用 find
方法:
int find(sub [,start[,end]])
这个方法会返回子字符串在主字符串中第一次出现的位置。如果找不到,就返回-1。
x = s.find("Gator") #x = 3
x = s.find("gator") #x = -1
所以你可以用 str1.find("{")
来找到第一个大括号的位置,用 str1.find("}")
来找到第二个大括号的位置。
或者可以这样做:
str2 = str1[str1.find("{"):str1.find("}")]
这段代码还没测试过,你可能需要在某个地方加个+1,但理论上应该是可行的,或者至少能让你找到正确的方向;)
10
你可以通过使用正则表达式来获取它。
>>> 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'