在python中获取特定值

时间:2018-02-21 18:30:24

标签: python regex

我是regex和python的新手,我正在努力解决以下问题。我有一个来自文件的特定字符串:

<td align="left">                                   
<(this, '/hdm/SingleDeviceMgmt/getDevice.do?deviceID)>                                                                 
<ahref="editDevice.do?deviceID=100089">
<do?deviceID/iopp>
GSE5677789
</a>
</td>
<input type="text" name="serialNumber" id="serialNumber" 
class="input_field" value="GSE5677789"  title="Enter Number. ">
<ahref="editDevice.do?deviceID=100089">

我需要从字符串中获取等于100089的deviceID。

我写的python代码是:

import re
with open('json_conversion.txt') as f:
for line in f:
    if "GSE5677789" and 'deviceID' in line:
        s=re.search(r'^deviceID=//.*\.',line)
        print s

但我得到的是无。

任何人都可以帮忙。

2 个答案:

答案 0 :(得分:1)

import re
your_string = """
<td align="left">                                   

<ahref="editDevice.do?deviceID=100089">
GSE5677789
</a>
</td>
<input type="text" name="serialNumber" id="serialNumber" 
class="input_field" value="GSE5677789"  title="Enter Number. ">
<ahref="editDevice.do?deviceID=100089">
"""
m = re.search('deviceID=([0-9]*)', your_string).group(1)

答案 1 :(得分:1)

首先,我无法弄清if "G1A115051301136"要实现的目标。

其次,你的正则表达式是错误的。请改为'deviceID=(\d+)'

正则表达式中的^是行开头的标记,这只会匹配一个行的开头的短语。我的答案中的括号表示一个捕获组,并允许从返回的结果中轻松提取数字。

我亲自测试我使用this等在线工具编写的所有正则表达式。