[英]Extracting Data with Python Regular Expressions
我在使用Python正則表達式時遇到麻煩,想出一個正則表達式來提取特定值。
我試圖解析的頁面有許多productIds,它們以下列格式顯示
\"productId\":\"111111\"
在這種情況下,我需要提取所有值, 111111
。
t = "\"productId\":\"111111\""
m = re.match("\W*productId[^:]*:\D*(\d+)", t)
if m:
print m.group(1)
意思是匹配非單詞字符( \\W*
),然后是productId
后跟非列字符( [^:]*
)和a :
. 然后匹配非數字( \\D*
)並匹配並捕獲后面的數字( (\\d+)
)。
產量
111111
這樣的事情:
In [13]: s=r'\"productId\":\"111111\"'
In [14]: print s
\"productId\":\"111111\"
In [15]: import re
In [16]: re.findall(r'\d+', s)
Out[16]: ['111111']
這里的反斜杠可能會增加混淆,因為它們被(非原始)Python字符串和regexp語法用作轉義字符。
這將從您發布的格式中提取產品ID:
re_prodId = re.compile(r'\\"productId\\":\\"([^"]+)\\"')
原始字符串r'...'
消除了一級反斜杠逃逸; 使用單引號作為字符串分隔符不需要轉義雙引號; 最后,由於它們在正則表達式語言中的特殊含義,后面的內容被加倍(只有一次)。
您可以使用regexp對象的findall()
方法查找某些文本中的所有匹配項:
re_prodId.findall(text_to_search)
這將返回所有產品ID的列表。
試試這個,
:\\"(\d*)\\"
如果這不符合您的要求,請提供更多數據示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.