簡體   English   中英

使用Python正則表達式提取數據

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

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