I want to restrict the characters in it, so I replaced it with this:
\nstring: pp.Word = pp.Word(\n pp.printables, exclude_chars=meta_chars, min=2, as_keyword=True\n)\ndouble_quoted_string: pp.ParserElement = pp.Combine(\n double_quote + string + double_quote\n)\nsingle_quoted_string: pp.ParserElement = pp.Combine(\n single_quote + string + single_quote\n)\nstring_def: pp.ParserElement = (\n double_quoted_string | single_quoted_string\n)\nThis throws an exception on the same input though.
\nI'm guessing I'm missing something subtle. Appreciate any tips on how to accomplish the goal.
\n(Thanks for the wonderful package, Paul!)
","upvoteCount":1,"answerCount":3,"acceptedAnswer":{"@type":"Answer","text":"This gave me just enough to go on that I figured out the problem: I wasn't excluding single or double quotes from the word, so my string var was eating them.
\nThis:
\nquotes: str = \"\\\"'\"\nstring: Word = Word(printables, exclude_chars=quotes + meta_chars, min=2)\ndouble_quoted_string: ParserElement = Combine(double_quote + string + double_quote)\nsingle_quoted_string: ParserElement = Combine(single_quote + string + single_quote)\nstring_def: ParserElement = double_quoted_string | single_quoted_string\nis how to replace this and only include printable characters (except quotes and meta characters):
\nstring_def: QuotedString = QuotedString('\"', unquote_results=False) | QuotedString(\n \"'\", unquote_results=False\n)\n\nThanks again ...\n-
|
I have a double- or single-quoted string like this which works great: I want to restrict the characters in it, so I replaced it with this: This throws an exception on the same input though. I'm guessing I'm missing something subtle. Appreciate any tips on how to accomplish the goal. (Thanks for the wonderful package, Paul!) |
Beta Was this translation helpful? Give feedback.
-
|
What is in meta_chars? And what is the input that is failing that you expect to succeed? |
Beta Was this translation helpful? Give feedback.
-
|
If there are spaces in your quoted strings, then the expression you've written won't match them because printables does not include any whitespace characters. |
Beta Was this translation helpful? Give feedback.
-
|
This gave me just enough to go on that I figured out the problem: I wasn't excluding single or double quotes from the word, so my string var was eating them. This: is how to replace this and only include printable characters (except quotes and meta characters): |
Beta Was this translation helpful? Give feedback.
This gave me just enough to go on that I figured out the problem: I wasn't excluding single or double quotes from the word, so my string var was eating them.
This:
is how to replace this and only include printable characters (except quotes and meta characters):