使用Python正则表达式提取数据
问题描述:
我在使用正则表达式来提取特定值时遇到了一些麻烦,使用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']
+0
我觉得这更多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