我想在字符串id
和name
中找到特定的两个单词,我认为使用正则表达式,但我无法格式化。
在文件中我有:
<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
当我尝试使用RE只得到字符串id
时,我得到了:
padrao = r'^id$'
(...)
result = re.findall(padrao,textoEncontrado[0])
print result
(...)
结果是[]
抱歉英文不好。
谢谢大家。 :)
答案 0 :(得分: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')]