我需要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

===============>>#1 票数:2

假设文件不止于此:

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))

===============>>#2 票数:2 已采纳

你是这个意思吗?

#!/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

  ask by user3552978 translate from so

未解决问题?本站智能推荐: