Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python JSONPath筛选器表达式错误,JSONPath rw 1.4.0包含意外字符_Python_Python 2.7_Jsonpath - Fatal编程技术网

Python JSONPath筛选器表达式错误,JSONPath rw 1.4.0包含意外字符

Python JSONPath筛选器表达式错误,JSONPath rw 1.4.0包含意外字符,python,python-2.7,jsonpath,Python,Python 2.7,Jsonpath,我安装了jsonpath rw 1.4.0,带有 sudo apt get install python jsonpath rw 它带有一个/usr/bin/jsonpath。但这给了我使用过滤器表达式时的错误: $ jsonpath '$..book[?(@.price < 10)]' book.json Traceback (most recent call last): File "/usr/bin/jsonpath", line 11, in <module>

我安装了jsonpath rw 1.4.0,带有

sudo apt get install python jsonpath rw

它带有一个
/usr/bin/jsonpath
。但这给了我使用过滤器表达式时的错误:

$ jsonpath '$..book[?(@.price < 10)]' book.json
Traceback (most recent call last):
  File "/usr/bin/jsonpath", line 11, in <module>
    load_entry_point('jsonpath-rw==1.4.0', 'console_scripts', 'jsonpath.py')()
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/bin/jsonpath.py", line 71, in entry_point
    main(*sys.argv)
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/bin/jsonpath.py", line 57, in main
    expr = parse(args.expression)
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/parser.py", line 14, in parse
    return JsonPathParser().parse(string)
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/parser.py", line 32, in parse
    return self.parse_token_stream(lexer.tokenize(string))
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/parser.py", line 55, in parse_token_stream
    return new_parser.parse(lexer = IteratorToTokenStream(token_iterator))
  File "/usr/lib/python2.7/dist-packages/ply/yacc.py", line 331, in parse
    return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
  File "/usr/lib/python2.7/dist-packages/ply/yacc.py", line 1061, in parseopt_notrack
    lookahead = get_token()     # Get the next token
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/parser.py", line 179, in token
    return next(self.iterator)
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/lexer.py", line 33, in tokenize
    t = new_lexer.token()
  File "/usr/lib/python2.7/dist-packages/ply/lex.py", line 393, in token
    newtok = self.lexerrorf(tok)
  File "/usr/lib/python2.7/dist-packages/jsonpath_rw/lexer.py", line 165, in t_error
    raise JsonPathLexerError('Error on line %s, col %s: Unexpected character: %s ' % (t.lexer.lineno, t.lexpos - t.lexer.latest_newline, t.value[0]))
jsonpath_rw.lexer.JsonPathLexerError: Error on line 1, col 8: Unexpected character: ? 
$jsonpath'$…book[?(@.price<10)]book.json
回溯(最近一次呼叫最后一次):
文件“/usr/bin/jsonpath”,第11行,在
加载入口点('jsonpath-rw==1.4.0','console\u脚本','jsonpath.py')()
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/bin/jsonpath.py”,第71行,在入口点
主(*sys.argv)
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/bin/jsonpath.py”,第57行,在main中
expr=parse(args.expression)
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/parser.py”,第14行,在parse中
返回JsonPathParser().parse(字符串)
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/parser.py”,第32行,在parse中
返回self.parse_token_流(lexer.tokenize(string))
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/parser.py”,第55行,在parse\u token\u流中
返回新的\u parser.parse(lexer=iteratortokenstream(令牌\u迭代器))
文件“/usr/lib/python2.7/dist packages/ply/yacc.py”,第331行,在parse中
返回self.parseopt_notrack(输入、lexer、调试、跟踪、tokenfunc)
文件“/usr/lib/python2.7/dist packages/ply/yacc.py”,第1061行,位于parseopt_notrack中
lookahead=get_token()#获取下一个token
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/parser.py”,第179行,在令牌中
返回下一个(self.iterator)
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/lexer.py”,第33行,标记化
t=新的语法标记()
文件“/usr/lib/python2.7/dist packages/ply/lex.py”,第393行,在令牌中
newtok=self.lexerrorf(tok)
文件“/usr/lib/python2.7/dist packages/jsonpath\u rw/lexer.py”,第165行,在t\u错误中
raise JSONPATHERLERROR('第%s行,列%s上的错误:意外字符:%s'(t.lexer.lineno,t.lexpos-t.lexer.latest\u newline,t.value[0]))
jsonpath_rw.lexer.JsonPathLexerError:第1行第8列出错:意外字符:?
那么jsonpath rw 1.4.0不支持过滤器表达式吗

看起来是,但那是在2015年


从那以后情况有变化吗

我通过使用
jsonpath rw ext
而不是
jsonpath rw
实现了这一点。这似乎是一个支持过滤器扩展

你弄明白了吗?我也遇到了同样的问题。谢谢你的确认@Mike。我很高兴,不仅仅是我。我还没来得及调查这件事,而且很可能永远也不会发生。你能在那里记录一个bug吗?