2017-04-10 4 views
3

文字の間に複数の文字列を検索:は、私はこのようなデータで長い文字列を持っている

new_list = [33,54,60] 

は基本的に私はちょうど必要があります。

category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA; 

そして、私は次のようになり、それからリストを作成したいです文字列内のcategory:;の間の値は、元の順序を維持します。

正常に動作しない場合に例外が発生する可能性があると思われるものを作成する可能性があります。私はPythonを初めて使っているので、実際に可能性を知っていないので、どうすれば適切に実行されるべきかを誰かが見せてくれたら本当に感謝しています。

これは実際のバージョンです:単に正規表現を構築

s = "category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;" 
c = s.count("category") 
z = 0 
number_list = [] 
for x in range(z,c): 
    val = s.split('category:')[x+1] 
    number = val.split(' ;')[0] 
    print (number) 
    number_list.append(number.strip()) 

print ("All Values:", number_list) 

答えて

3

import re 

rgx = re.compile(r'category:\s*(\d+)\s*;') 
number_list = rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;')

これは与える:

>>> rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;') 
['33', '54', '60'] 

を使用すると、結果はint秒になりたい場合は、 map

を使用できます
import re 

rgx = re.compile(r'category:\s*(\d+)\s*;') 
number_list = list(map(int,rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;')))

これが生成します。

>>> number_list 
[33, 54, 60] 
0
s = "category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;" 
s = s.split(";") 
number_list = [] 
for ss in s: 
    if "category" in ss: 
     number_list.append(int(ss[10:-1])) 
関連する問題