У меня есть очень длинная строка, которую я извлек из файла изображения. Строка может выглядеть так
...\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)])
2 ответа
Вы можете использовать split
:
string.split("Article-no: ", 1)[1][0:10]
Для этого может пригодиться регулярное выражение.
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
будет искать в строке места, где это совпадает, а затем вы можете извлечь цифру из совпадений.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.