我需要在python中使用正则表达式来匹配并返回文本文件中字符串"id":
之后的整数。
文本文件包含以下内容:
{"page":1,"results": [{"adult":false,"backdrop_path":"/ba4CpvnaxvAgff2jHiaqJrVpZJ5.jpg","id":807,"original_title":"Se7en","release_date":"1995-09-22","p
我需要使用正则表达式获取807
之后的"id"
。
答案 0 :(得分: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))
答案 1 :(得分: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