2016-02-20 88 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)'