文本抓取语言包
tsl-compiler的Python项目详细描述
tsl–"文本抓取语言
用于处理伪代码中的刮削语言的python包
tsl python包允许您编写和执行伪代码样式语言,以处理带有正则表达式和简单逻辑的文本文件。这为非程序员提供了一个简单的数据挖掘入口。
可以使用python tsl.py myscript.tsl将其作为cli运行,也可以使用tslengine类,如下所示:
fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
示例:
这将读取stats/milemones.csv
中的所有行,获取所有行,将它们拆分成列,选择第二列并将相应行保存到由所述列标记的文件中(例如stats/31-03-2019.txt
)。
索引
如何工作?
设置
可用的TSL命令
模板化
它是如何工作的?
tsl逐行运行脚本,并在后台执行相应的python代码。文件处理、复杂数据类型和模板化是快速原型的内置功能。每一行以命令开头,后跟空格和空格分隔的参数。
大多数命令支持可选子句,如as…
(存储变量)或in…
(文件句柄)以提供更多信息。
命令的输入和输出可以是字符串或字符串集合。在梯形图中,tsl迭代集合的字符串,并将命令应用于每个字符串。命令as
、member
、split
和for every
循环将上下文更改为提供的变量。这意味着您可以在以下命令中省略as
子句,始终自动引用上下文。要引用变量而不是字符串,请使用方括号。记录某些内容
将记录字符串"something",而记录[某些内容]
将记录名为something的变量的内容
设置
使用pip install tsl安装软件包。
可用的TSL命令
文件和系统操作
bash<;command>;
as<;variable>;
运行bash命令并将返回的输出保存到变量。
示例:
bashgitbranchasbranches
空的[<;文件路径>;]
打开文件并删除其所有内容。
示例:
inwordbag.txtempty
在<;path/to/textfile.txt>;
打开文件并读取其所有行。您可以使用 示例: 创建嵌套目录结构(如果不存在)。否则,路径将用作将来操作的上下文。 示例: 以给定的文件名保存最新的集合。 示例: 将给定变量(或最后一个 示例: 将内容追加到与当前打开的文件不同的文件中
示例: 根据集合的索引选择集合的特定项。 示例: 选择上次打开的文件中找到的所有单词。 示例: 选择从指示的字符串/正则表达式/数字到指示的字符串或正则表达式或数字的范围。请注意,我们从1开始计数,以保持自然 示例: 从指定的字符串/正则表达式/数字到行尾选择范围 **示例: 选择从行首到指定字符串/正则表达式/数字的范围。 示例: 将tsl的下列属性之一设置为true: 计算数学运算 示例: 打印到控制台。对变量使用带模板标记的字符串(例如,"here is:[varname]") 存储所选内容中的行数。 示例: 存储目录中文件或文件夹的计数。 示例: 遍历集合并根据模板标记更改所有条目。使用括号标记变量,例如: 示例: 例如,将"我的名字是丹"改为"嗨,我的名字是丹" 合并两个集合并将其存储在新变量中。 示例: 在当前打开的文件或存储的集合的行中查找字符串或正则表达式的所有匹配项。此搜索的结果将自动存储在变量 示例: 删除最后选定的行(例如,使用"全部查找"找到的行) 用另一个字符串替换给定的字符串或正则表达式,可以在特定集合中进行选择。 示例: 按字母数字顺序(按升序)对提供的集合或上次引用的集合进行排序。日志行记录行
在下一个"in"语句之前,所有未来的文件操作都将引用此操作。
您通常会看到后面跟着
]take
或find 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>;
]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>;
详细
活动
计算
操作
为<;变量
fromTSLEngineimportTSLEngineTSL=TSLEngine('myScript.tsl')ifTSL.task:TSL.run()
4
记录变量字符串
将
<;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>;
]按
ode><;分隔符>;as<;string regex>;
<;变量>;
使用分隔符将字符串拆分为集合。
示例:
bashgitbranchasbranches1
独特的线条
从上次引用的集合中删除所有重复行。
内存
记住<;string variable>;
为<;variablename>;
在新变量中存储字符串或变量。
取<;行结果文件文件夹
[作为<;名称>;
]
将所选集合更改为整行(将行作为…
)全部查找指令的结果,或更改为在<;folderpath>;
指令中用前面的指定的文件夹中找到的文件。
示例:
bashgitbranchasbranches2
流量
对于每个变量
-< /H3>
循环遍历集合,用当前索引填充变量i
。在循环中,可以使用单数变量名(books->;book,babies->;baby)访问集合的项。
如果集合为空,则跳过for循环。这对于创建条件流非常有用。
始终在一个单独的行中用三个连续的连字符终止循环。
示例:
bashgitbranchasbranches3
运行path/to/script.tsl
运行另一个TSL文件
外部TSL文件将接收与内联代码相同的作用域。
模板化
模板用方括号括起来,可以出现在带引号的字符串、文件路径中,甚至可以出现在正则表达式中:
bashgitbranchasbranches4
如果找不到变量,模板标记将保持不变,包括方括号。这使我们可以轻松地将它们与正则表达式混合。