Попытка использовать регулярное выражение для извлечения данных между квадратными скобками в текстовом файле - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь создать регулярное выражение в python для извлечения названия продуктов, а затем продуктов между []:

Я пробовал это:

(\WVulnerable\WProducts:.*?\W.(\[))

Но это только соответствует первому [. Все, что я пытаюсь сделать после этого, терпит неудачу, и тогда оно не обнаружит.

"Vulnerable Products: ": [ (fixed)
    "Redhat Linux 5.1",
    "Redhat Linux 5.0",
    "Redhat Linux 4.2",
    "Redhat Linux 4.1",
    "Redhat Linux 4.0",
    "Redhat Linux 3.0.3",
    "Redhat Linux 2.1",
    "Redhat Linux 2.0",
    "Caldera OpenLinux Standard 1.2"
],
 with open("bids.json",  'r', encoding='utf-8-sig') as json_file:
    data = pd.read_json(json_file)
    json_data = json.load(json_file)

    title = json_data[0]["title"]
    id = json_data[0]["id"]
    pclass = json_data[0]["class"]
    local = json_data[0]["local"]
    remote = json_data[0]["remote"]
    prod = json_data[0]["products"]

    for i in range(len(prod)):
        data = (title, id, pclass, cve, local, remote, prod[i])
        cur.execute('insert into bids values (?,?,?,?,?,?,?)', data)

    db_conn.commit()
    cur.close() 

1 Ответ

0 голосов
/ 23 января 2020

Если это JSON, проанализируйте его как JSON. Затем вы можете выделить, например, ключи словаря и элементы списка, и применить к ним регулярное выражение или простое (частичное) сравнение строк. Не пытайтесь анализировать весь текст JSON с одним регулярным выражением; это будет слишком сложно 99 из 100 раз. - 0 0 43 мин. go

, который решил эту проблему, я удалил регулярное выражение, прежде чем выражение for, похоже, работает, теперь я получаю другую ошибку.

спасибо 0 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...