Python的字符串解释和解析
我想学习如何解释和解析python中的字符串。我想做一个“字符串命令”(不知道是否是正确的表达)。但要更好地解释我将举一个例子:我需要一个类似于SQL的命令,其中有一个关键字字符串,它将使进程执行所要求的操作。像这样:cursor.execute("UPDATE Cars SET Price=? WHERE Id=?", (50000, 1))
。但是,我要创建我的项目像这样的格式(这是没有必要与SQL):mydef("U={Cars[Price=50000], Id=1}")
Python的字符串解释和解析
Syntax table: <command>={<table>[<value name>=<value (int/str/float/bool)>], <id>=<value to id>}
Where command is: U=update, C=create, S=select, I=insert, D=delete
嗯,我真的想了解我怎么能做到这一点在Python。如果可能的话。
只是要清楚,你知道Python2.5 +包含sqlite吗?
import sqlite3
conn = sqlite3.connect(dbname.db)
curs = conn.cursor()
curs.execute("""CREATE TABLE Cars (UID INTEGER PRIMARY KEY, \
"Id" VARCHAR(42), \
"Price" VARCHAR(42))""")
curs.execute("UPDATE Cars SET Price=? WHERE Id=?", (50000, 1))
编辑补充:我没有真正测试这个;你至少需要一个插入语句来完成这个工作。
我知道,但我真的需要这种数据库处理方式。 – 2012-08-10 22:09:57
Pyparsing是一个简单的纯Python,小尺寸,自由许可的模块,用于创建类似于您所描述的解析器。下面是我在PyCon'06(为德克萨斯州Python UnConference,2008更新)中给出的一些演示文稿,一个是pyparsing本身的介绍,一个是使用pyparsing分析和执行简单命令语言的演示(文本冒险游戏)。
简介Pyparsing - http://www.ptmcg.com/geo/python/confs/TxUnconf2008Pyparsing.html
一个简单的冒险游戏命令解析 - http://www.ptmcg.com/geo/python/confs/pyCon2006_pres2.html
两个演示使用S5,因此如果你的鼠标到右下角,你会看到< <和>>按钮,Ø按钮将整个演示文稿视为单个可打印的网页,以及用于跳转到特定页面的组合框。
您可以在http://pyparsing.wikispaces.com找到更多关于pyparsing的信息。
这个pyparsing与
我做了这段代码,我不知道这是否可行。只想要意见。
>>> s = '<command>={<table>[<value name>=<value>], <id>=<value id>}'
>>> s1 = s.split('=', 1)
>>> s2 = s1[1].split(',', 1)
>>> s2 = s1[1].replace('{', '').replace('}', '').split(',', 1)
>>> s3 = s2[0].replace(']', '').split('[')
>>> s4 = s3[1].split('=')
>>> s1
['<command>', '{<table>[<value name>=<value>], <id>=<value id>}']
>>> s2
['<table>[<value name>=<value>]', ' <id>=<value id>']
>>> s3
['<table>', '<value name>=<value>']
>>> s4
['<value name>', '<value>']
>>> s5 = s2[1].split('=')
分裂整个命令,得到ARGS:
<command>={<table>[<value name>=<value>],<id>=<value id>}
["<command>", "{<table>[<value name>=<value>],<id>=<value id>}"]
["<table>[<value name>=<value>]", "<id>=<value id>"]
["<table>", "<value name>=<value>"]
["<value name>", "<value>"]
["<id>", "<value id>"]
你可能想阅读了关于文法和第一解析。看看他们的维基百科文章。 – Johan 2012-08-10 21:43:44
请参阅[Python解析工具](http://nedbatchelder.com/text/python-parsers.html)。 – jfs 2012-08-10 22:39:55