簡體   English   中英

python中的正則表達式用於正整數和負整數

[英]Regex in python for positive and negative integer

我是在 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

謝謝並感謝它

對於正整數和負整數,中間使用或不使用逗號: -?(?:\\d+,?)+

-? 有或沒有負號
(?:打開一個組
\\d+一位或多位
,? 可選逗號
)關閉組
(?:\\d+,?)+這個組可能有一個或一個 occences

根據您要完成的任務,這可能有效:

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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM