从fi获取并格式化字符串

2024-04-26 23:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在字符串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

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

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

结果是[]

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


Tags: 字符串namereidmainresultsplitprint
1条回答
网友
1楼 · 发布于 2024-04-26 23:07:45

如果您的输入是包含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')]

相关问题 更多 >