簡體   English   中英

Python字符串解釋和解析

[英]Python string interpretation and parse

我正在嘗試學習如何在python中解釋和解析字符串。 我想做一個“字符串命令”(不知道是否正確的表達式)。 但是,為了更好地解釋,我將舉一個例子:我想要一個類似SQL的命令,其中有一個帶有關鍵字的字符串,這些字符串可以使進程按照要求進行操作。 像這樣: cursor.execute("UPDATE Cars SET Price=? WHERE Id=?", (50000, 1)) 但是我想為我的項目創建這樣的格式(不必使用sql): mydef("U={Cars[Price=50000], Id=1}")

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中做到這一點。 如果可能的話。

Pyparsing是一個簡單的純Python,占用空間小,獲得自由許可的模塊,用於創建您所描述的解析器。 這是我在PyCon'06上所做的一些演示(已針對Texas Python UnConference,2008年進行了更新),一個是pypars本身的簡介,另一個是使用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的更多信息。

只是要清楚一點,您是否知道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))

編輯添加:我實際上沒有對此進行測試; 您至少需要一個insert語句才能完成這項工作。

我做了這段代碼,我不知道這是否行得通。 只需要意見。

>>> 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('=')

分割整個命令並獲取參數:

<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>"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM