2016-10-10 17 views
-1

私はPythonで正規表現を学ぶのが初めてで、正規表現をPythonで使って(正と負の)整数をリストに入れたいと思っています。正規表現と負の整数のためのPythonの正規表現

たとえば、

これはリスト内のデータです。

data = 
    [u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)', 

    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)', 

    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : '] 

AとBの正の値(負と正)を抽出して変数に格納すると、数値を扱うことができますか?

for line in data[0]: 
     pattern = re.compile("([A-Z]=(-?\d+?),[A-Z]=(-?\d+?))") 
     store = pattern.findall(line) 

print store 

がまたは使用との間でカンマなし、ありがとうと、正と負の整数の場合は、それを

+0

あなたが助けをしたい場合は、[、最小完全、かつ検証例]を投稿する必要があります(http://stackoverflow.com/help/mcve)あなたが持っているコードの試しました。 – CAB

+0

申し訳ありません!私は投稿を編集しました:) – LearningNewbie

答えて

0

を感謝..私はこのようになめらかを試みたが、リストは空です:-?(?:\d+,?)+

-?負の符号付きまたはなし
(?:グループを開きます
\d+ 1桁以上の数字
,?オプションのコンマ
)は、このグループはあなたが達成しようとしているもの、これは動作する可能性に応じて、1つまたはそれから1 occencences

0

有することが可能な基
(?:\d+,?)+閉じ:

import re 

data = [ 
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)', 
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)', 
    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : ' 
] 

for line in data: 
    m = re.search('\((\w)=(-?\d+),(\w)=(-?\d+)\)', line) 
    if not m: 
      continue 
    myvars = {} 
    myvars[m.group(1)] = int(m.group(2)) 
    myvars[m.group(3)] = int(m.group(4)) 
    print myvars 

この結果、現在の行に変数が含まれる辞書(myvars)が作成されます。これを使用する場合は、辞書から取得しようとする前に、必要な変数が定義されていることを確認する必要があります。上記の出力は、次のとおりです。

{u'A': -5, u'B': 5} 
{u'A': 5, u'Y': 5} 
+0

変数に整数値(例えば-5または5)を格納しようとしています!私は文字を取り除きながらこれを達成する方法を知っていてもいいですか? – LearningNewbie

+0

変数は文字列内の変数と同じ名前にする必要がありますか?クラスインスタンス変数にするのは大丈夫でしょうか? – FamousJameous

+0

それはありません!私はちょうど私が値を処理できるように、変数に(正と整数の両方)、関連する数値を格納する必要があります:) 私はこのようななめらかを試みたが、リストが空..です ライン分のデータに[0] : pattern = re.compile( "\([AZ] =( - ?\ d +?)、[AZ] =( - ?\ d +?)\)") store = pattern.findall(line) print store – LearningNewbie