让python将带引号的字符串视为块

问题描述 投票:4回答:2

我正在使用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 "'"
python python-3.x parsing pyparsing
2个回答
2
投票

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

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

我不是键盘,所以请耐心等待。但我希望它能帮到我


1
投票

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

无论如何,谢谢你的回复,帮助我解决其他问题

© www.soinside.com 2019 - 2024. All rights reserved.