使python将带引号的字符串视为一个块

时间:2019-04-23 13:00:40

标签: python python-3.x parsing pyparsing

我正在使用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 "'"

2 个答案:

答案 0 :(得分:2)

我无法发表评论,因此我必须创建一个答案 尝试使用     str(text).replace ("'", "\'") 方法或使用正则表达式

import re
re.sub(re.compile("'"),"\'", str(text))

我不在键盘上,请耐心等待。 但我希望它能有所帮助

答案 1 :(得分:1)

我不认为这个错误会发生在很多人身上,但是引用字符串的最简单方法是使用pyparser给出的那个 from pyparser import quotedString, ... as pp而不是尝试创建自己的

仍然感谢您的答复,帮助我解决了其他问题