Je touche toujours le Mac Book Pro Retina 13 pouces avec un visage doy le matin. Je pensais que je ferais aussi Julia aujourd'hui. Plus tôt, j'ai écrit dans l'article de Qiita que Python pouvait également être utilisé.
[Note personnelle] Essayez le cadre d'application Web de julia "Morsel"
J'ai pensé essayer, alors je vais essayer. Vous pouvez exécuter des bibliothèques Python à l'aide de PyCall.jl.
https://github.com/stevengj/PyCall.jl
Essayons-le.
Exécutez la commande suivante à partir du REPL de Julia
Pkg.add("PyCall")
C'est acceptable
Dans l'exemple écrit en README.md de PyCall.jl J'utilise la bibliothèque mathématique.
https://github.com/stevengj/PyCall.jl/blob/ef23e044d4870d3440a76c79d09c85a36c510d06/README.md
using PyCall
@pyimport math
math.sin(math.pi / 4) - sin(pi / 4) # returns 0.0
Essaie.
using PyCall
@pyimport re
match_pattern = re.compile("Welcome to (.+\.)")
groups_of_match = pycall(match_pattern["search"], PyObject, "Welcome to underground.")["group"]
result = convert(String, pycall(groups_of_match, PyObject, 0))
match_of_group = convert(String, pycall(groups_of_match, PyObject, 1))
println("All match is [$result]")
println("Match of first regex group is [$match_of_group]")
Le résultat de l'exécution est le suivant.
Ce code est équivalent à ce qui suit en Python:
import re
match_pattern = re.compile("Welcome to (.+\.)")
groups_of_match = match_pattern.search("Welcome to underground.")
result = groups_of_match.group(0)
match_of_group = groups_of_match.group(1)
print("All match is [{result}]".format(result=result))
print("Match of first regex group is [{match_of_group}]".format(
match_of_group=match_of_group)
)
Résultat d'exécution
Selon Référence
pycall(function::PyObject, returntype::Type, args...)
Puisqu'il est écrit dans le format, j'ai fait ce qui suit pour l'essai de la bibliothèque d'expressions régulières.
pycall(match_pattern["search"], PyObject, "Welcome to underground.")["group"]
PyObject renvoie des types numériques, booléens et fonctionnels. Cela ressemble à un objet pratique. (La description dit qu'il utilise PyObject de l'API C)
En appelant pycall comme ci-dessus, Le groupe qui correspond à l'expression régulière et toute la chaîne correspondante peuvent être utilisés.
match_pattern["search"]
Est
Obtenez les attributs de l'objet comme décrit dans Description PyObject. Dans ce cas, vous appelez la méthode ** search ** de l'objet de correspondance d'expression régulière.
convert
Convertir la description est écrit dans la description de PyObject.
convert(T, o::PyObject)
En bref, jetez. Je voulais en faire un type de chaîne de Julia, alors J'ai converti le résultat de l'expression régulière (PyObject) dans le type String de julia.
convert(String, pycall(groups_of_match, PyObject, 0))
Je pourrais facilement convertir le type PyObject en type String.
Avoir PyCall semble être l'une des plaintes de Julia. Le nombre de bibliothèques propres à Julia n'est pas très grand pour les bibliothèques intégrées, Je pensais que c'était bien de pouvoir utiliser les ressources de la bibliothèque Python ^ - ^
Recommended Posts