Python正则表达式从字符串中提取数字

时间:2018-04-27 09:13:50

标签: python regex

我想用python从一个大的html文件中提取一个数字。 我的想法是使用这样的正则表达式:

import re
text = 'gfgfdAAA1234ZZZuijjk'
try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    found = ''

found

但不幸的是我不习惯正则表达式而且我无法通过这个例子来提取0,54125

(...)<div class="vk_ans vk_bk">0,54125 count id</div>(...)

有没有其他方法可以提取数字,还是有人可以帮助我使用正则表达式?

2 个答案:

答案 0 :(得分:0)

您可以在搜索之前替换文本中的某些字符。例如,要捕获12,34之类的数字,您可以执行此操作:

text = 'gfgfdAAA12,34ZZZuijjk'
try:
    text = text.replace(',', '')
    found = re.search('AAA(\d+)ZZZ', text).group(1)
except AttributeError:
    found = ''

print found
# 1234

如果你需要捕捉一行内的数字,你可以使你的模式更通用,如下所示:

text = '<div class="vk_ans vk_bk">0,54125 count id</div>'
text = text.replace(',', '')
found = re.search('(\d+)', text).group(1)

print found
# 054125

答案 1 :(得分:0)

如果您想要输出0,54125(或\d+,\d+),则需要为输出设置一些条件。

从以下输入中

 (...)<div class="vk_ans vk_bk">0,54125 count id</div>(...)

如果要提取0,54125,您似乎可以尝试以下几种正则表达式,

(?<=\>)\d+,\d+

Demo

,或者

(?<=\<div class=\"vk_ans vk_bk\"\>)\d+,\d+

Demo

等。

相关问题