【问题标题】:Wrap Words in Square Bracket Instead of sglQuotedString or dblQuotedString用方括号代替 sglQuotedString 或 dblQuotedString 换行
【发布时间】:2015-05-23 18:19:33
【问题描述】:

我正在使用 pyparsing 来解析布尔字符串查询。所以我将发送一个看起来像这样的字符串:

string = "'foo' AND 'bar' OR NOT 'foobar'"

我使用的是sqlQuotedString(),但有时被解析的字符串会包含其他类型的标点符号,如撇号,因此可能是这样的:

string = "'foo' AND 'ba'r' OR NOT 'fo0-bar'"

我尝试设置 QuotedString("'", escChar = '\\'),但我从 javascript 发送字符串,但我似乎无法找到在字符串中包含反斜杠的方法。我试过这个:

for(var i = 0; i < v.length; i++) {
    if(v[i] === '"') {
        v[i] = [v.slice(0, i), "\\", v.slice(v)].join('');
    }
}

我尝试添加额外的反斜杠 ("\\\\\\\"),但字符串仍然显示没有 "\"

有没有办法只设置 pyparsing 以便它期望用方括号而不是单引号或双引号括起来的单词,即 [word]'word'"word"

【问题讨论】:

    标签: javascript python escaping pyparsing


    【解决方案1】:

    使用pyparsing的QuotedString类,指定'['作为开始字符,']'作为结束字符:

    >>> from pyparsing import OneOrMore,QuotedString
    >>> bracketed = QuotedString('[',endQuoteChar=']')
    >>> OneOrMore(bracketed).parseString('[sldflsdjkf][asdf][sdf]').asList()
    ['sldflsdjkf', 'asdf', 'sdf']
    

    【讨论】:

    • 非常感谢。那行得通。我尝试了 QuotedString,但没有正确输入 endQuoteChar sigh
    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2011-05-04
    • 2019-06-23
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多