我有一个9mb的xml文件,其中包含关于我正在为其编写脚本的系统的信息。系统保存名为symbols
的小文件,每个符号有一个tick type
,属于一个estate
。
数据以这种格式存储。
<Symbol SymbolName="name" Estate="estate" TickType="type" />
我现在解析这个文件,并写了3个文件,每个文件都包含一个列表,其中包含三个内容之一。
我需要做的是以某种方式将数据存储在列表或字典中,以便所有符号都可以写入文件,而其对应的类型和属性则写入文件的另一部分。
结果是一个html文件,有一个下拉菜单,你选择和estate
,它显示symbols
在其中,并给出每个symbol
的type
。
我目前的解析方法是使用xml.dom.minidom
模块,然后使用getElementsByTagName
这确实返回我想要的每个东西的3个列表,但不将它们链接到其他列表的相应成员。
安装以下库
pip install beautifulsoup4
pip install flask
,然后运行下面的og代码
from bs4 import BeautifulSoup
from flask import Flask, request, jsonify
xml = '''
<Symbol SymbolName="A" Estate="e1" TickType="t1" />
<Symbol SymbolName="B" Estate="e1" TickType="t2" />
<Symbol SymbolName="C" Estate="e1" TickType="t2" />
<Symbol SymbolName="D" Estate="e2" TickType="t2" />
'''
soup = BeautifulSoup(xml)
symbols = soup.find_all('symbol')
app = Flask(__name__)
@app.route("/")
def filter_symbols():
constraint = request.args.get('estate', None)
estate_in_req = 'estate' in request.args
return jsonify(symbols=[
{'name': s.get('symbolname'), 'type': s.get('ticktype')}
for s in symbols if not estate_in_req or s.get('estate') == constraint
])
if __name__ == "__main__":
app.run(debug=True)
现在你有了一个可以解决你的问题的web服务器。
localhost: 5000/?房地产= e1
将输出:
{
"symbols": [
{
"name": "A",
"type": "t1"
},
{
"name": "B",
"type": "t2"
},
{
"name": "C",
"type": "t2"
}
]
}
到你的浏览器
我希望你可以使用代码片段继续工作与你的解决方案。
如果有性能问题,请使用数据库。;)
——brunsgaard