2010-12-09 70 views
2

我有一個字符串"MenuItem {Open source}"如何子串字符串?

如何從字符串中獲取字符串Open source

例如

str1 = "MenuItem {Open source}" 

執行一些動作設定線二是...

print str2 # 'Open source' 

我怎樣才能達致這使用Python或Jython的?

+2

閱讀`re`模塊文檔。閱讀有關字符串,它們的方法和切片的文檔。閱讀`for`和`while`循環的文檔。查找並閱讀關於Python的教程。看到一種模式? – martineau 2010-12-09 10:39:30

回答

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' 
4

提取子字符串: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" 

因此在你的examplel中,你需要str2 = str1[10:21] = "Open Source"

當然,這是假設它總是開源和菜單項...

相反,你可以使用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的地方,但在理論上,應該工作,或至少讓你在正確的軌道上;)

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

你有字符串「開源」!