2011-10-18 8 views
-2

カンマ区切りリストマッチング:私はサンプル文字列とても似てい

[{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} {0:10}] 

私は括弧内の項目の最初のセットに興味があること:

{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} 

私はセットを解析したいと思いますし、それをリストに入れてください。私はPythonで作業しています。

+3

私は少し混乱しています。このリストのすべての要素に個別に一致する正規表現が必要ですか?または、リストを配列などに分割して処理しやすくしたいですか? – ewok

+0

後者です。分割が大きい文字列の一部であるため、分割が機能しません。 –

+0

与えられた変数の値がカンマで区切られたリストにあるかどうかを調べたいですか?カンマで区切られたリストは何に保存されていますか?あなたはそれが大きな文字列の一部であると言いました。私たちにもっと多くの情報を与えてください。 –

答えて

2
for match in re.finditer("(?i)[a-z]+", subject): 
    # match start: match.start() 
    # match end (exclusive): match.end() 
    # matched text: match.group() 

これは、あなたのリストの "要素"を反復するのに役立ちます。

編集:あなた大きな文字列の部分を書いてください。それは元の質問を変えます。

for match in re.finditer(r"(?i)(?:(\b[a-z]+\b)[,}])", subject): 
    # match start: match.start() 
    # match end (exclusive): match.end() 
    # matched text: match.group(1) 

これでリストが見つけられ、その中の単語が抽出されます。

+0

それは動作します。ありがとうございました。 –

+0

@AlexBliskovskyよろしくお願いします。 – FailedDev

0

正規表現はトークンを作成するだけで、後でそれらを処理する必要があります。幸いにも、Python用の標準正規表現ライブラリには、見つけたすべての値を与える関数が含まれています。

import re 
input = '{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT}' 
data = re.findall(r'\w+', input) 

また、これはすべての「単語」を検索します。有効な入力に応じて、より強力な正規表現が必要な場合があります。その点で追加の詳細が役立ちます。

0

文字列を分割するには、string.split(s,',')を使用できます。文字 '、'について分割された文字列のリストを返します。

http://docs.python.org/library/stdtypes.html#str.split

大きな文字列、最初の「{」と「}」文字程度の分割のうち、ちょうどこのリストを取得します。

関連する問題