我在使用正則表達式來提取特定值時遇到了一些麻煩,使用Python正則表達式提取數據
我試圖解析頁面有許多productIds的其出現在以下格式
\"productId\":\"111111\"
我需要在這種情況下,提取所有的值,111111
。
我在使用正則表達式來提取特定值時遇到了一些麻煩,使用Python正則表達式提取數據
我試圖解析頁面有許多productIds的其出現在以下格式
\"productId\":\"111111\"
我需要在這種情況下,提取所有的值,111111
。
t = "\"productId\":\"111111\""
m = re.match("\W*productId[^:]*:\D*(\d+)", t)
if m:
print m.group(1)
意味着匹配非單詞字符(\W*
),然後productId
其次是非柱字符([^:]*
)和:
。然後匹配非數字(\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']
我覺得這更多Pythonic。 :) – skytreader 2015-06-02 08:20:00
的反斜線這裏可能會讓人困惑,因爲它們被用作均由(非原始)Python字符串和正則表達式的語法轉義字符。
此提取從您發佈的格式的產品ID:
re_prodId = re.compile(r'\\"productId\\":\\"([^"]+)\\"')
原始字符串r'...'
用反斜槓一級摒棄;使用單引號作爲字符串分隔符可避免使用雙引號;最後backslashe加倍(只有一次),因爲它們在正則表達式語言中的特殊含義。
可以使用RegExp對象的findall()
方法來查找所有匹配的一些文字:
re_prodId.findall(text_to_search)
這將返回所有產品ID的列表。
你讀過[上蟒的正則表達式文檔】(http://docs.python.org/2/library/re.html)? – 2013-04-11 20:39:06
難道你是新來的正則表達式,Python或兩者?你需要哪部分幫助?你有什麼嘗試? – cmd 2013-04-11 20:41:06
[如何從Python中的字符串中提取子字符串?]可能的重複(http://stackoverflow.com/questions/4666973/how-to-extract-a-substring-from-inside-a-string-in -python) – 2015-11-17 17:11:21