Вырежьте строку из CSV-файла, используя только Python или jsonata

Я использую каналы C2Intel для поиска конкретных наблюдаемых, и когда я это делаю, я хотел бы извлечь/вырезать строку.

Пример: https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv

Если вы перейдете по ссылке/CSV-файлу, я смогу найти конкретный IP-адрес, то есть — 54.161.191.72.

Я хотел бы вырезать всю строку:

www.e-enroll-benefits.com, возможный домен Cobalt Strike C2,/enrollmentinfo/,54.161.191.72

Поскольку каждая строка уникальна, я не уверен, как бы мне поступить в этом процессе. Я думал найти длину, но не знаю, как это сделать, поскольку она различается.

Вот мой текущий код:

ip_address = "54.161.191.72"
lines = "https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv"
for line in lines:
    if re.match("ip_address", line):
        values_slice = line.split(": ")[-1]#not sure how you get the whole row?

Ценю любую помощь или руководство. Заранее спасибо!

Я предлагаю распечатать каждую «строчную» переменную. Это не то, что вы хотите. Поскольку файл не загружается. lines — это всего лишь строка из одной строки, поэтому вы перебираете символы этой строки.

OneCricketeer 14.07.2024 02:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
59
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я попробовал более простой подход, и он у меня работает. Вместо посещения URL-адреса я загрузил файл csv в локальную папку, в идеале в ту же папку, где запускается скрипт Python для сохранения шага «os.chdir». Пожалуйста, смотрите ниже:

import os
os.chdir('/Users/***/***/') # please update this path to where your csv file downloaded is
ip_address = '54.161.191.72'
lines = open('domainC2swithURLwithIP-filter-abused.csv')
for line in lines:
    if ip_address in line:
        print(line)

Ниже приведен результат, который я получил: Рад ответить на любые вопросы, которые могут у вас возникнуть. Ваше здоровье!

Этот процесс был великолепен, я смог использовать эту структуру, обновив пару переменных. Работает идеально! Спасибо

SergeT 16.07.2024 03:22

Спасибо, что поделились, и я рад, что это помогло!

Molecular Alchemist 16.07.2024 06:07

Ваш код не извлекает файл перед его использованием. Кроме того, у вас уже есть вся строка line, вам просто нужно ее распечатать.
Вот обновленная версия, которая каждый раз извлекает ссылку и печатает строку, содержащую заданный IP-адрес.

import requests

URL = "https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv"
ip_address = "54.161.191.72"

c2list = requests.get(URL).text
for line in c2list.split("\n"):
    if ip_address in line:
        print(line)

Этот код разбивает ответ на строки и проверяет каждую строку на наличие указанного IP-адреса.
RegEx не нужен, чтобы просто отфильтровать строку.
Используйте if re.search(<regex_string>, line):, когда требуется более сложное сопоставление с образцом.
Я надеюсь, что это решило вашу проблему!

Спасибо за эту итерацию, я использовал детали, чтобы сделать свою окончательную версию. Ваше здоровье

SergeT 16.07.2024 03:23

Не совсем понимаю, что вы подразумеваете под «вырезать строку», поэтому предполагаю, что вы просто хотите найти строку (строку), имеющую определенное значение.

Ваши данные имеют формат CSV, так почему бы не использовать встроенный модуль CSV? В конце концов, оно для этого и существует.

Попробуй это:

import csv
import requests

url = "https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv"
ip = "54.161.191.72"

with requests.get(url) as response:
    response.raise_for_status() # check HTTP response
    lines = response.text.splitlines()[1:] # split text (CSV) response into lines skipping the first row (column headings)
    reader = csv.reader(lines) # construct the reader 
    for i, row in enumerate(reader): # enumerate the reader
        if row[-1] == ip: # check last column
            print(lines[i])
            break

Выход:

www.e-enroll-benefits.com,Possible Cobalt Strike C2 Domain,/enrollmentinfo/,54.161.191.72

Другие вопросы по теме