У меня есть очень длинная строка, которую я извлек из файла изображения. Строка может выглядеть так

...\n\nDate: 01.01.2022\n\nArticle-no: 123456789\n\nArticle description: asdfqwer 1234...\n...

Как извлечь только 10 символов после подстроки "Article-no:"?

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

    s = "... string shown above ..."
    start = "Article-no: "
    end = "Article description: "
    print(s[s.find(start)+len(start):s.rfind(end)])
1
Slevin 26 Янв 2022 в 17:07

2 ответа

Лучший ответ

Вы можете использовать split:

string.split("Article-no: ", 1)[1][0:10]
4
Tal Folkman 26 Янв 2022 в 17:13

Для этого может пригодиться регулярное выражение.

import re

# Create a pattern which matches "Article-no: " literally,
# and then grabs the digits that follow.
pattern = re.compile(r"Article-no: (\d+)")
s = "...\n\nDate: 01.01.2022\n\nArticle-no: 123456789\n\nArticle description: asdfqwer 1234...\n..."

match = pattern.search(s)
if match:
    print(match.group(1))

Это выводит:

123456789

Используемое регулярное выражение Article-no: (\d+) состоит из следующих частей:

Article-no:      # Match this text literally
(                # Open a new group (i.e. group 1)
\d+              # Match 1 or more occurrences of a digit
)                # Close group 1

Модуль re будет искать в строке места, где это совпадает, а затем вы можете извлечь цифру из совпадений.

0
Tom Aarsen 26 Янв 2022 в 17:11