Python:使用python从一行中提取匹配词以数字开头

时间:2018-08-02 01:41:07

标签: python regex shell

我想阅读文本文件,并在下面的文本中找到以5开头的单词。

“状态”:“确定”}],“ PhysicalLocationString”:“ rack1 / chassis_u1 / cpu0 / pcie_slot3”,“ Physloc”:“ 0003000101010005”,“ PlaceholderNetworkDeviceFunctions”:[{“ FC HBA 1”:“ 51: 40:2E:C0:01:C9:53:E8“},{” FC HBA 2“:” 51:40:2E:C0:01:C9:53:EA“}]}},” PartNumber“:” P9D94A”,“ SerialNumber”:“ MY57470DS8”,“状态”:{“健康”:“确定”,“ HealthRollup”:“确定”,“状态”:“已启用”}}

我在另一个文件中的输出应该是

51:40:2E:C0:01:C9:53:E8 51:40:2E:C0:01:C9:53:EA

这是我的代码:

    import re
    import sys
    import os

    #get line
    with open('/root/SDFlex/work/cookbooks/ilorest/files/OP.txt', 'r') as file:
    for line in file:
    re.findall(r'\b[s]:\w+', line)
    matchedLine = line
        break


    #and write it to the file
    with open('/root/SDFlex/work/cookbooks/ilorest/files/file.txt', 'w') as 
    file:
         file.write(matchedLine)

请帮助

3 个答案:

答案 0 :(得分:1)

使用图案

pattern = '"(5[^"]+)"'
re.findall(pattern, your_string)

它将搜索引号",后跟5,后跟除引号外的所有内容,然后在该引号之后结束。分组将提取您想要的号码。

答案 1 :(得分:0)

您可以尝试以下方法:

" ".join(e for e in your_string.split('"') if e.startswith("5"))

答案 2 :(得分:0)

感谢您的ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000修改。

或者:

print(" ".join(filter(lambda x: x.startswith('5'),your_string.split('"'))))

输出:

51:40:2E:C0:01:C9:53:E8 51:40:2E:C0:01:C9:53:EA

在换行符中:

print("\n".join(filter(lambda x: x.startswith('5'),your_string.split('"'))))