[英]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.