使 python 将带引号的字符串视为一个块
Make python consider a quoted string as a block
我正在使用 Pyparsing
编写语法,并想让它解析所有插入内容,即使是那些有日期的插入内容。
我不知道如何使 quotedStrings
成为一个完整的块。
ident = Word( alphas, alphanums + "_$" ).setName("identifier")
number = Word(nums)
quotedString = "'" + delimitedList(number | ident , ".", combine=True) + "'"
quotedStringList = Group(delimitedList(quotedString))
insert_statement <<= (INSERT + INTO + tableNameList + VALUES + delimitedList(openingparenthese + quotedStringList + closingparenthese) + Optional(endLine))
data = "INSERT INTO test VALUES('2008-07-28 00:00:05', 'a');"
print (data, "\n", insert_statement.parseString( data ))
我希望得到类似的东西:
['insert', 'into', ['test'], 'values', '(', ["'", '2008-07-28 00:00:05', "'", "'", 'a', "'"], ')', ';']
但我只得到:
Expected "'"
我不能发表评论,所以我必须创建一个答案
尝试使用
str(text).replace ("'", "\'")
方法或使用正则表达式
import re
re.sub(re.compile("'"),"\'", str(text))
我不在键盘旁,请耐心等待。
但我希望它能有所帮助
我认为这个错误不会发生在很多人身上,但是引用字符串的最简单方法...是使用 pyparser 给出的方法
from pyparser import quotedString, ... as pp
而不是尝试创建自己的
谢谢你的回复,帮我解决了其他问题
我正在使用 Pyparsing
编写语法,并想让它解析所有插入内容,即使是那些有日期的插入内容。
我不知道如何使 quotedStrings
成为一个完整的块。
ident = Word( alphas, alphanums + "_$" ).setName("identifier")
number = Word(nums)
quotedString = "'" + delimitedList(number | ident , ".", combine=True) + "'"
quotedStringList = Group(delimitedList(quotedString))
insert_statement <<= (INSERT + INTO + tableNameList + VALUES + delimitedList(openingparenthese + quotedStringList + closingparenthese) + Optional(endLine))
data = "INSERT INTO test VALUES('2008-07-28 00:00:05', 'a');"
print (data, "\n", insert_statement.parseString( data ))
我希望得到类似的东西:
['insert', 'into', ['test'], 'values', '(', ["'", '2008-07-28 00:00:05', "'", "'", 'a', "'"], ')', ';']
但我只得到:
Expected "'"
我不能发表评论,所以我必须创建一个答案
尝试使用
str(text).replace ("'", "\'")
方法或使用正则表达式
import re
re.sub(re.compile("'"),"\'", str(text))
我不在键盘旁,请耐心等待。 但我希望它能有所帮助
我认为这个错误不会发生在很多人身上,但是引用字符串的最简单方法...是使用 pyparser 给出的方法
from pyparser import quotedString, ... as pp
而不是尝试创建自己的
谢谢你的回复,帮我解决了其他问题