文本抓取语言包

tsl-compiler的Python项目详细描述


tsl–"文本抓取语言

用于处理伪代码中的刮削语言的python包

tsl python包允许您编写和执行伪代码样式语言,以处理带有正则表达式和简单逻辑的文本文件。这为非程序员提供了一个简单的数据挖掘入口。

可以使用python tsl.py myscript.tsl将其作为cli运行,也可以使用tslengine类,如下所示:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()

示例:

Sublime Text Syntax Highlighting

这将读取stats/milemones.csv中的所有行,获取所有行,将它们拆分成列,选择第二列并将相应行保存到由所述列标记的文件中(例如stats/31-03-2019.txt)。


索引

如何工作?

设置

可用的TSL命令

模板化

它是如何工作的?

tsl逐行运行脚本,并在后台执行相应的python代码。文件处理、复杂数据类型和模板化是快速原型的内置功能。每一行以命令开头,后跟空格和空格分隔的参数。 大多数命令支持可选子句,如as…(存储变量)或in…(文件句柄)以提供更多信息。

命令的输入和输出可以是字符串或字符串集合。在梯形图中,tsl迭代集合的字符串,并将命令应用于每个字符串。命令asmembersplitfor every循环将上下文更改为提供的变量。这意味着您可以在以下命令中省略as子句,始终自动引用上下文。要引用变量而不是字符串,请使用方括号。记录某些内容将记录字符串"something",而记录[某些内容]将记录名为something的变量的内容


设置

使用pip install tsl安装软件包。


可用的TSL命令

文件和系统操作

bash<;command>;as<;variable>;

运行bash命令并将返回的输出保存到变量。

示例:

bashgitbranchasbranches

空的[<;文件路径>;]

打开文件并删除其所有内容。

示例:

inwordbag.txtempty

<;path/to/textfile.txt>;

打开文件并读取其所有行。您可以使用日志行记录行 在下一个"in"语句之前,所有未来的文件操作都将引用此操作。 您通常会看到后面跟着takefind a ll命令

示例:

instats/01092019.txt

<;path/to/folder>;

创建嵌套目录结构(如果不存在)。否则,路径将用作将来操作的上下文。

示例:

in"/Sublime Text/Packages"count filesasfileCountlog[fileCount]

保存[as<;filepath>;]

以给定的文件名保存最新的集合。

示例:

save asrunner/cleaned_userinputs.txt

写入[<;variable>;]

将给定变量(或最后一个查找全部的结果)写入用

中打开的最后一个文件中

示例:

write[userIds]

<;string variable>;[添加到<;filepath>;]

将内容追加到与当前打开的文件不同的文件中

示例:

add[libraries]tolibs.txt

选择

选择第n个[输入]]

根据集合的索引选择集合的特定项。

示例:

inbigrams.txtselect 4th

选择单词[of[input]][作为<;output>;]

选择上次打开的文件中找到的所有单词。

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
0

选择[从<;string regex int>;][到<;string regex int>;]

选择从指示的字符串/正则表达式/数字到指示的字符串或正则表达式或数字的范围。请注意,我们从1开始计数,以保持自然

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
1

<;string regex integer>;

中选择

从指定的字符串/正则表达式/数字到行尾选择范围

**示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
2

选择以<;string regex integer>;

选择从行首到指定字符串/正则表达式/数字的范围。

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
3

调试和计算

be<;property>;

将tsl的下列属性之一设置为true:

详细活动

计算操作<;变量

计算数学运算

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
4

记录变量字符串

打印到控制台。对变量使用带模板标记的字符串(例如,"here is:[varname]")

<;variable>;计数为<;countvariable>;

存储所选内容中的行数。

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
5

<;path/to/dir>;中的<;文件夹>;计数为<;countvariable>;

存储目录中文件或文件夹的计数。

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
6

操作

<;varname>;更改为<;formula>;

遍历集合并根据模板标记更改所有条目。使用括号标记变量,例如:[varname]

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
7

例如,将"我的名字是丹"改为"嗨,我的名字是丹"

<;setname>;<;setname>;合并为<;varname>;

合并两个集合并将其存储在新变量中。

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
8

查找所有<;string regex>;[在<;varname>;][作为<;varname>;]

在当前打开的文件或存储的集合的行中查找字符串或正则表达式的所有匹配项。此搜索的结果将自动存储在变量found

示例:

fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
9

删除行

删除最后选定的行(例如,使用"全部查找"找到的行)

<;string>;替换<;string>;[在<;variable>;]

用另一个字符串替换给定的字符串或正则表达式,可以在特定集合中进行选择。

示例:

bashgitbranchasbranches
0

排序[<;varname>;]

按字母数字顺序(按升序)对提供的集合或上次引用的集合进行排序。

<;string regex>;ode><;分隔符>;as<;变量>;

使用分隔符将字符串拆分为集合。

示例:

bashgitbranchasbranches
1

独特的线条

从上次引用的集合中删除所有重复行。

内存

记住<;string variable>;<;variablename>;

在新变量中存储字符串或变量。

<;行结果文件文件夹[作为<;名称>;]

将所选集合更改为整行(将行作为…全部查找指令的结果,或更改为在<;folderpath>;指令中用前面的指定的文件夹中找到的文件。

示例:

bashgitbranchasbranches
2

流量

对于每个变量

-< /H3>

循环遍历集合,用当前索引填充变量i。在循环中,可以使用单数变量名(books->;book,babies->;baby)访问集合的项。

如果集合为空,则跳过for循环。这对于创建条件流非常有用。

始终在一个单独的行中用三个连续的连字符终止循环。

示例:

bashgitbranchasbranches
3

运行path/to/script.tsl

运行另一个TSL文件

外部TSL文件将接收与内联代码相同的作用域。


模板化

模板用方括号括起来,可以出现在带引号的字符串、文件路径中,甚至可以出现在正则表达式中:

bashgitbranchasbranches
4

如果找不到变量,模板标记将保持不变,包括方括号。这使我们可以轻松地将它们与正则表达式混合。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
验证Java验证用户输入的一系列数字   java如何在SpringBoot中字段验证失败时在ConstraintViolationException中获取RequestParam名称   java如何解决Vertx阻塞DNS问题   java意外类型平均值   java如何将dataframe的UUID列转换为包含相同十六进制序列的简单字符串?   身份散列映射的java用法   java无法在eclipse中导入现有项目   进程从运行的java程序中获取CPU号   java将文本视图的特定行滚动到顶部在最后一个屏幕上不起作用   无法初始化java SpringSecurityFilterChain   java当我在项目中使用volatile时,为什么下面的代码显示不同的结果?   是否有转换java的标准方法。util。函数,消费者<T>转换为java。util。作用函数<T,Void>   java nginx分块传输编码失败   java如何将几个IF转换为一个循环   java URI从路径中删除/删除