簡體   English   中英

字符串后的Python Regex匹配整數

[英]Python Regex Match Integer After String

我需要python中的正則表達式來匹配並在文本文件中的字符串"id":之后返回整數"id":

文本文件包含以下內容:

{"page":1,"results": [{"adult":false,"backdrop_path":"/ba4CpvnaxvAgff2jHiaqJrVpZJ5.jpg","id":807,"original_title":"Se7en","release_date":"1995-09-22","p

我需要使用正則表達式在"id"之后獲取807

假設文件不止於此:

import json

with open('/path/to/file.txt') as f:
    data = json.loads(f.read())
    print(data['results'][0]['id'])

如果該文件不是有效的JSON,則可以使用以下方法獲取id的值:

from re import compile, IGNORECASE

r = compile(r'"id"\s*:\s*(\d+)', IGNORECASE)

with open('/path/to/file.txt') as f:
    for match in r.findall(f.read()):
        print(match(1))

你是這個意思嗎?

#!/usr/bin/env python
import re

subject = '{"page":1,"results": [{"adult":false,"backdrop_path":"/ba4CpvnaxvAgff2jHiaqJrVpZJ5.jpg","id":807,"original_title":"Se7en","release_date":"1995-09-22","p'

match = re.search('"id":([^,]+)', subject)
if match:
    result = match.group(1)
else:
    result = "no result"
print result    

輸出: 807

編輯:

為了回應您的評論,添加了一種忽略第一個匹配項的簡單方法。 如果使用此選項,請記住在主題中添加"id":809,"etc ,以便我們可以忽略807並找到809。

n=1
for match in re.finditer('"id":([^,]+)', subject):
    if n==1:
        print "ignoring the first match"
    else:
        print match.group(1)
    n+=1

暫無
暫無

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

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