Python - Regex - комбинация букв и цифр (неопределенная длина) - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь получить идентификатор файла из текстового файла . В приведенном выше примере имя файла d735023ds1.htm, которое я хочу получить для создания другого URL. Однако эти имена файлов различаются по длине, и мне потребуется универсальное регулярное выражение, чтобы охватить все возможности.

Примеры имен файлов

d804478ds1a.htm.
d618448ds1a.htm.
d618448. htm

Мой код

for cik in leftover_cik_list:

    r = requests.get(filing.url)
    content = str(r.content)
    fileID = None

    for line in content.split("\n"):

        if fileID == None:
            fileIDIndex = line.find("<FILENAME>")

            if fileIDIndex != -1:
                trimmedText = line[fileIDIndex:]
                result = RegEx.search(r"^[\w\d.htm]*$", trimmedText)

                if result:
                    fileID = result.group()

    print ("fileID",fileID)

    document_link = "https://www.sec.gov/Archives/edgar/data/{0}/{1}/{2}.htm".format(cik, accession_number, fileID)

    print ("Document Link to S-1:", document_link)

Ответы [ 3 ]

0 голосов
/ 20 марта 2020

Вы должны попробовать re.match(), который ищет шаблон в начале входной строки. Кроме того, ваше регулярное выражение не годится, вы должны добавить анти-ша sh перед ., так как точка означает "любой символ" в регулярном выражении.

import re
result = re.match('[\w]+\.htm', trimmedText)
0 голосов
/ 20 марта 2020

Попробуйте это регулярное выражение:

import re
files = [
    "d804478ds1a.htm",
    "d618448ds1a.htm",
    "d618448.htm"
]
for f in files:
    match = re.search(r"d\w+\.htm", f)
    print(match.group())

d804478ds1a.htm
d618448ds1a.htm
d618448.htm

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

0 голосов
/ 20 марта 2020
import re

...
result = re.search('^d\d{1,6}.+\.htm$', trimmedText)
if result:
    fileID = result.group()

^ d = Начать с объявления

\ d {1,6} = Искать 1-6 цифр, если может быть неограниченное количество цифр, заменить на \ d {1,}

. + = Подстановочный знак

\. Htm $ = Конец .htm

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