[英]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.