如何截取字符串?

4 投票
3 回答
32280 浏览
提问于 2025-04-16 08:17

我有一个字符串 "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'

撰写回答