Python: извлечение совпадающего слова начинается с номера из строки с использованием Python

1

Я хочу прочитать текстовый файл и найти слова, начинающиеся с 5 в тексте ниже.

"Status": "OK"}], "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", "Status": {"Здоровье": "OK", "HealthRollup": "OK", "State": "Enabled"}}

Мой вывод в другом файле должен быть

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
    Это выглядит как содержимое JSON, и поэтому вам следует использовать здесь синтаксический анализатор JSON, а не просто решение регулярных выражений.
Теги:

3 ответа

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('"'))))
  • 0
    как поставить в следующую строку? как 51: 40: 2E: C0: 01: C9: 53: E8 51: 40: 2E: C0: 01: C9: 53: EA
  • 0
    первая строка должна быть 51: 40: 2E: C0: 01: C9: 53: E8, а вторая строка должна быть 51: 40: 2E: C0: 01: C9: 53: EA
Показать ещё 7 комментариев
1

Использовать шаблон

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

Он будет искать цитату " за которой следует 5, за которой следует что-либо, кроме цитаты, а затем заканчивается после цитаты. Группировка будет извлекать нужный вам номер.

  • 0
    выдача ошибки: pattern = "\" (5 [^ "] +) \" "^ SyntaxError: неверный синтаксис
  • 0
    Прости за это! Я исправил это с лучшими кавычками.
Показать ещё 1 комментарий
0

Вы можете попробовать следующее:

" ".join(e for e in your_string.split('"') if e.startswith("5"))
  • 0
    Большое вам спасибо .. он тоже работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню