0

我想在一个字符串中找到一个特定的两个单词idname我想使用正则表达式,但我无法格式化。

在文件中我有:

<p>Any text, bla bla lorem ipsum, bla bla</p>
<p>test = {"player":{"id":"123123","name":"f_teste"};

这是我的进展:

import re

def main():
    padrao = r'"id"\w+'

    caminho = 'D:\index.txt'
    arquivo = open(caminho,'r')
    texto = arquivo.readlines()[1].split('{')

    textoEncontrado = texto[2].split(',')

    print textoEncontrado[0]
    print textoEncontrado[1]

    arquivo.close()


if __name__ == '__main__':
    main()

结果:

"id":"123123"
"name":"f_teste"};

我想要的是:

id: 123123
name = f_teste

当我尝试id使用 RE 仅获取字符串时,我得到:

padrao = r'^id$'
(...)
result = re.findall(padrao,textoEncontrado[0])
    print result
(...)

结果是[]

对不起英语不好。谢谢大家。:)

4

1 回答 1

2

如果您的输入是包含 json 文本的有效 html:

>>> from bs4 import BeautifulSoup
>>> html = """<p>Any text, bla bla lorem ipsum, bla bla</p>
... <p>test = {"player":{"id":"123123","name":"f_teste"}};"""
>>> soup = BeautifulSoup(html)
>>> import  re
>>> jsonre = re.compile(r'test\s*=\s*(.*);', re.DOTALL)
>>> p = soup('p', text=jsonre)[0]
>>> json_text = jsonre.search(p.get_text()).group(1)
>>> import json
>>> json.loads(json_text)
{u'player': {u'id': u'123123', u'name': u'f_teste'}}

要安装bs4,请运行:pip install beautifulsoup4

正则表达式解决方案如下所示:

>>> re.findall(r'"(id)":"([^"]*)","(name)":"([^"]*)"', html)
[('id', '123123', 'name', 'f_teste')]
于 2012-08-07T20:15:22.150 回答