我想阅读文本文件,并在下面的文本中找到以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)
请帮助
答案 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('"'))))