簡體   English   中英

Python 在特定單詞后捕獲特定數字

[英]Python Capture certain number after certain words

我試圖從這句話中捕獲“書號:”(類似於 isbn ,但有數字)數字。 我查看了堆棧上的 ISBN 編號示例,並嘗試了不同類型的正則表達式組合,但我無法將它們捕獲到單個列表中。 我在這里缺少什么?

sentence="List of book ids that are important to read book id: A83827-121-1-23-1341-2315ad3  book id: N32-12-1-23-1341-2342  and  book id: A334121A313412342"
isbn = re.compile("(?:[0-9]{3}-)?[0-9]{1,5}-[0-9]{1,7}-[0-9]{1,6}-[0-9][A-Z]",re.IGNORECASE)

matches = []
for line in sentence:
    matches.extend(isbn.findall(line))
    print(line)

嘗試像這樣捕獲最終輸出:

['A83827-121-1-23-1341-2315ad3','N32-12-1-23-1341-2342','A334121A313412342']

請注意,您的for循環將遍歷每個字符:您不需要它。

這是您可以使用的正則表達式:

isbn = re.compile(r"book id: ([\w-]+)")
print(isbn.findall(sentence))

輸出:

['A83827-121-1-23-1341-2315ad3', 'N32-12-1-23-1341-2342', 'A334121A313412342']

解釋:

  • [\\w-]+匹配字母數字字符 ( \\w ) 和連字符的任何(非空)序列。
  • 括號表示一個捕獲組, findall將只返回該組中匹配的內容,因此它不包括“book id:”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM