2016-02-20 115 views
0

我有一個字符串,它看起來像這樣:提取子從字符串在Python

catString = randomtextrandomtext (cats:1)=1 randomtext randomtextrandomtext (cats:3)=3 randomtext randomtext (cats:1540)=1,540 randomtextrandomtext randomtext (cats:85):85 randomtext 

我想打印出一個字符串,看起來像這樣:

(cats:1)(cats:3)(cats:1540)(cats:85) 

我試圖做:

catCount = '' 

for a in catString: 
    for b in line.split(): 
     if '(cats:' in b: 
      catCount += str(part) 
print catCount 

然而,該代碼打印出:

(cats:1)=1(cats:3)=3(cats:1540)=1,540(cats:85)=85 

我該如何達到自己想要的效果?

回答

0

使用str.index特別。

catString = "randomtextrandomtext (cats:1)=1 randomtext randomtextrandomtext (cats:3)=3 randomtext randomtext (cats:1540)=1,540 randomtextrandomtext randomtext (cats:85):85 randomtext" 

result = '' 
end = -1 
try: 
    while True: 
     start = catString.index('(cats:', end+1) 
     end = catString.index(')', start) 
     result += catString[start:end+1] 

except ValueError: 
    pass 

print(result) 
0

試試這個開始參數一旦

catCount = '' 

for a in catString: 
    for b in line.split(): 
     if '(cats:' in b: 
      catCount += str(b[0,b.index(")")+1]) 
print catCount 
1
import re 

''.join(re.findall(r'\(cats:\d*\)', catString)) 
1
>>> ''.join(re.findall('\(cats:[0-9]+\)',catString)) 
'(cats:1)(cats:3)(cats:1540)(cats:85)'