Извлечь URL из файла - PullRequest
       17

Извлечь URL из файла

0 голосов
/ 26 февраля 2019

Я пытаюсь извлечь URL из файла, который имеет следующий формат.

[CertSpotter]     wwwqa.xyz.abc.com,1.1.1.1
[CertSpotter]     origin.xyz.abc.com,1.1.1.1
[CertSpotter]     wwwqa.xyz.abc.com,1.1.1.1
[CertSpotter]     wwwmg4.xyz.abc.com,1.1.1.1

Я нашел скрипт python, но в этом я получаю URL и IP оба, но мне нужнотолько URL.

import re

file_path = input("Enter the File Path: ")
f = open(file_path, 'r')
raw_text= str(f.readlines())
f.close()

domain = r"\b((?:https?://)?(?:(?:www\.)?(?:[\da-z\.-]+)\.(?:[a-z]{2,6})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])))(?::[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])?(?:/[\w\.-]*)*/?)\b"
foundip = re.findall( domain, raw_text )
for ip in foundip:
      print(ip)

после запуска скрипта я получаю следующий вывод.

wwwqa.xyz.abc.com
1.1.1.1
origin.xyz.abc.com
1.1.1.1
wwwmg4.xyz.abc.com
1.1.1.1

Желаемый вывод.

wwwqa.xyz.abc.com
origin.xyz.abc.com
wwwmg4.xyz.abc.com

Может кто-нибудь помочь мне разобраться?

Спасибо

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019
import re
with open('file.txt') as f:
    result = re.findall(' +(.*),', f.read())

Выход:

['wwwqa.xyz.abc.com', 'origin.xyz.abc.com', 'wwwqa.xyz.abc.com', 'wwwmg4.xyz.abc.com']
0 голосов
/ 26 февраля 2019
import re

f = open('test.txt', 'r')
content = f.read()
pattern = r"^\[.*\]\s*(.*),.*"
matches = re.findall(pattern, content, re.MULTILINE|re.IGNORECASE)
print(matches)

Выход:

['wwwqa.xyz.abc.com', 'origin.xyz.abc.com', 'wwwqa.xyz.abc.com', 'wwwmg4.xyz.abc.com']
0 голосов
/ 26 февраля 2019

без регулярных выражений.Используя только str методы.

Пример:

with open(filename) as infile:
    for line in infile:
        val = line.strip().split()[-1].split(",")[0]
        print(val)

Выход:

wwwqa.xyz.abc.com
origin.xyz.abc.com
wwwqa.xyz.abc.com
wwwmg4.xyz.abc.com
...