Skip to main content

A python wrapper for FMR

Project description

pyfmr: a python wrapper for FMR

https://github.com/liuzl/fmr

Usage

examples

Install pyfmr via pip

pip install pyfmr

Grammar file

Save the following grammar content to file sf.grammar

<flight> = <departure> <arrival> {nf.flight($1, $2)};
[flight] = <arrival> <departure> {nf.flight($2, $1)};

<departure> = <from> <city> {nf.I($2)};

<arrival> = <to> <city> {nf.I($2)};
[arrival] = <arrival> {nf.arrival($1)};

<from> = "从" ;

<to> = "到" | "去" | "飞";

<city> = "北京"       {nf.I($@)}
       | "天津"       {nf.I($@)}
       | "上海"       {nf.I($@)}
       | "重庆"       {nf.I($@)}
       | `.(?:城|都)` {nf.I($@)}
       ;

<city_ext> = <city>            {nf.I($1)}
           | (any{1,1}) <city> {nf.I($2)}
           ;

<cities> = "直辖市:" (list<city_ext>) {nf.I($@)};

Python example codes

import pyfmr

p = pyfmr.Parser("./sf.grammar")
strs = [
    "直辖市:北京、上海、天津",
    "直辖市:帝都、津城、魔都",
    "中国现在有四个直辖市:帝都、魔都、天津、重庆。",
    "中国曾经的直辖市:帝都、魔都、天津、重庆、旧都。",
    "天津大学",
]
for l in strs:
    ret = p.extract(l, "cities")
    for item in ret:
        print(item)
    print("="*80)

How to build

The cross compiling is done by xgo.

Prerequisites

  • Docker
  • Golang

Steps

# 1. clone the git repo
git clone https://github.com/liuzl/pyfmr && cd pyfmr

# 2. pull xgo docker image
docker pull karalabe/xgo-latest

# 3. install xgo
go get github.com/karalabe/xgo

# 4. build shared libraries
xgo --targets=*/amd64 -buildmode=c-shared -out pyfmr/lib/fmr github.com/liuzl/pyfmr/src

# 5. build wheel
python3 setup.py sdist bdist_wheel

# 6. upload to pypi.org
python3 -m twine upload dist/*

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

pyfmr-0.0.2.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

pyfmr-0.0.2-py3-none-any.whl (16.6 MB view details)

Uploaded Python 3

File details

Details for the file pyfmr-0.0.2.tar.gz.

File metadata

  • Download URL: pyfmr-0.0.2.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.26.0 CPython/3.7.2

File hashes

Hashes for pyfmr-0.0.2.tar.gz
Algorithm Hash digest
SHA256 ed5fc53f75d09abd59b2a5771e9d0f71dd794aafff72795c0ccabd09cfad39ce
MD5 5108b8cf30365787bcd7d6b905a6ffcd
BLAKE2b-256 bdf12a06b5312ef719737758eff85abeb41f1daf6fdd91f1c32498aa2f456723

See more details on using hashes here.

File details

Details for the file pyfmr-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pyfmr-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.26.0 CPython/3.7.2

File hashes

Hashes for pyfmr-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 52d13f280a3b2badc3da0b3a61bbb9a4e18b4cb4850c7634e549c2f4e4e561a8
MD5 3cd743cf2fdd39f423792dd6efe7987d
BLAKE2b-256 db77c8900973a5b2b832079ad84a78be32b0096ad68c7e38f5e241e600bc8de9

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