首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenRefine支持Python3吗?

OpenRefine支持Python3吗?
EN

Stack Overflow用户
提问于 2021-12-29 05:59:46
回答 2查看 189关注 0票数 2

我有自己的Python库,我想在OpenRefine中使用它作为在此描述

然而,OpenRefine中的所有Python代码似乎都是通过支持只有Python 2的Jython来实现的。

有没有一种在Python3中运行OpenRefine代码的方法?

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-29 06:36:48

简短回答:不。Openrefine使用Jython,目前Jython基于python2.7,没有立即或短期的计划转向3.X版本。

但。

一旦您在您的计算机上安装了python3,就有一个技巧可以做到这一点。Python2允许执行命令行脚本/工具,并收集结果。

这个简单的python2脚本可以做到这一点:

代码语言:javascript
复制
# This jython2.7 script has to be executed as jython, not GREL
# It allows you to execute a command (CLI) in the terminal and retrieve the result.

# import basic librairies
import time
import commands
import random
# get status and output of the command
status, output = commands.getstatusoutput(value)
# add a random between 2 and 5s pause to avoid ddos on servers... Be kind to APIs!
time.sleep(random.randint(2, 5))
# returns the result of the command
return output.decode("utf-8")

我用它执行本地的python3脚本,但也挖掘,卷发等.

用例:假设我在A列中有一组internet域,我想在这些域上执行一个dig SOA命令。

  • 我创建了一个B列,它基于A:"dig SOA "+value,它将提供我想要执行的确切命令。
  • 我使用上面的jython脚本创建了一个基于B的列C。
  • 然后解析结果。

这个脚本是纯python2的,不依赖额外的库,应该永远工作。

免责声明:通过第三方应用程序执行本地代码应该谨慎。

票数 3
EN

Stack Overflow用户

发布于 2021-12-29 22:31:29

我需要类似的东西(必须“猜测”一列的文本是写的语言),而且,我发现一个很好的解决方案,并且工作得很快(有一些“额外的特性”很容易添加),就是将我的python3程序包装成一个烧瓶wrap (大约花了10分钟),然后从OpenRefine中用“通过获取URL添加列”来使用它。

额外的好处是,在我们在现场拥有的最快的机器上运行它是相当容易的,添加缓存等等。

我唯一希望看到的改进(在OpenRefine的一侧)是,可以选择并行获取多个URL,然后您可以在几台机器上运行多个烧瓶实例,并加快速度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70515655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档