Skip to main content

jq for pythonista

Project description

jq is too difficult

jq is too difficult, at least for me.

For example, extracting key-name when use is true only, from below JSON data.

{
  "apps": {
    "foo": {
      "use": true
    },
    "bar": {
      "use": true
    },
    "boo": {
      "use": true
    },
    "bee": {
      "use": false
    }
  }
}

What is jq’s answer? (taking over 30 minutes, my past challenges).

$ cat data.json | jq '.apps | . as $$o | keys | map(select($$o[.].use))'
[
  "bar",
  "boo",
  "foo"
]

If you have python’s knowledge, this is tiny oneliner, isn’t it?

$ cat data.json | jqfpy '[k for k, opts in get("apps").items() if opts["use"]]'
[
  "foo",
  "bar",
  "boo"
]

(get() is special function, like a json.load(sys.stdin).get.)

install

pip install jqfpy

how to use

describe syntax

todo.

tutorial

this is jqfpy version of jq’s Tutorial.

alias jsonDATA="curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'"
# jq.
jsonDATA | jq '.'
# jqfpy.
jsonDATA | jqfpy 'get()'
# jq.
jsonDATA | jq '.[0]'
# jqfpy.
jsonDATA | jqfpy 'get()[0]'
# jq.
jsonDATA | jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
# jqfpy.
jsonDATA | jqfpy 'd = get()[0]; {"message": get("commit/message", d), "name": get("commit/committer/name", d)}'
# or
jsonDATA | jqfpy '{"message": get("0/commit/message"), "name": get("0/commit/committer/name")}'
# jq.
jsonDATA | jq '.[] | {message: .commit.message, name: .commit.committer.name}'
# jqfpy.
jsonDATA | jqfpy --squash 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d)} for d in L]'
# jq.
jsonDATA | jq '[.[] | {message: .commit.message, name: .commit.committer.name, parents: [.parents[].html_url]}]'
# jqfpy.
jsonDATA | 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d), "parents": [p["html_url"] for p in d["parents"]]} for d in L]'

0.2.0

  • correct behaviours of –slurp and –unbuffered

  • support accessing data by json pointer like format

  • compact output support

  • multiple files support

  • exec code only once

0.1.0

  • adding some options

  • nocode is same as jq . (js == jq .)

  • showing pycode when error is raised

0.0.1

  • first release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jqfpy-0.2.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

jqfpy-0.2.1-py2.py3-none-any.whl (6.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jqfpy-0.2.1.tar.gz.

File metadata

  • Download URL: jqfpy-0.2.1.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jqfpy-0.2.1.tar.gz
Algorithm Hash digest
SHA256 57cfb4e693e57abb8ea93b158597bb4f10f9c0a1179b625446a0babcf7fa7b7f
MD5 71ad06d345a829e9fb60d35c6795994d
BLAKE2b-256 7d3c7f12c6f53b6db1dc87860683e633c24db14d51f11b9351aea5836b0fc39e

See more details on using hashes here.

File details

Details for the file jqfpy-0.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for jqfpy-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 75c631314af38e9a3814d1c40d0a1be2c62eedfb456579eacb498c35eccbd6eb
MD5 27e2b2d3fd35896dd34e2ab49f7aa8a2
BLAKE2b-256 0fa5d62ccab7aa9bb279602e449570810aec5476953916440b9c2f58c6119501

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page