TSL 文本抓取语言
基于 Python 的文本抓取语言(伪代码风格)
详细信息
安装次数
- 总计 167
- Win 100
- Mac 43
- Linux 24
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
自述文件
TSL – 文本抓取语言
Sublime Text 插件,用于处理伪代码风格的抓取语言
TSL Sublime Text 软件包允许您用伪代码风格的语言编写和执行代码来处理文本文件,使用正则表达式和简单逻辑。这使得非程序员也能够轻松地进入数据挖掘领域。
一旦将文件放在 Sublime Text 的 包目录 中,具有 .tsl
扩展名的文件将自动获得 语法高亮 和一个 构建系统 来运行它们。通过在 ST3 菜单中选择 工具 > 构建系统 > TSL
来强制构建。
示例
… 这将读取 stats/milestones.csv
中的所有行,将这些行分割成列,选择第二列,并将相应的行保存到用该列命名的文件中(例如 stats/31-03-2019.txt
)。
索引
它是如何工作的?
设置
可用的 TSL 命令
模板化
它是如何工作的?
TSL 会逐行执行脚本,并在后台执行相应的 Python 代码。文件处理、复杂数据类型和模板化是内置的,以实现快速原型设计。每一行都由一个命令后跟一个空格以及空格分隔的参数组成。大多数命令支持类似 as ...
(存储变量)或 in ...
(文件句柄)的可选子句,以提供更多信息。
数据类型
命令的输入和输出可以是 字符串 或 字符串集合。在迭代情况下,TSL 对集合中的每个字符串应用命令。以下命令(as
、remember
、split
和 for every
)将上下文更改为提供的变量。这意味着您可以在以下命令中省略 as
子句,始终自动引用上下文。要引用变量而不是字符串,请使用方括号。`log something
` 将记录字符串“something”,而 `log [something]
` 将记录名为 something 的变量内容。
循环
在 for every
循环内部工作时,TSL 自动使用您变量的单数形式遍历集合的条目。
示例
in /contacts/childnames.txt
take lines as children
log [children]
for every [child]
split by tab
select 2nd as first-name
---
log [first-names]
在循环过程中创建的变量将自动附加到使用复数形式命名的集合中。在上面的示例中,first-name
的创建将自动填充名为 first-names
的集合。不规则复数(如 child -> children 或 foot -> feet)具有基本支持。如果复数不适用,请尝试更好的词形变化,例如使用 `species-collection
` 代替 `species
`。
设置
将 TSL 文件夹放入 %USERPROFILE%/AppData/Roaming/Sublime Text 3/Packages
以安装插件。
可用的 TSL 命令
文件和系统操作
bash <command>
as <variable>
执行 bash 命令并将返回的输出保存到变量中。
示例
bash git branch as branches
empty [<filepath>]
打开文件并删除其全部内容。
示例
in wordbag.txt
empty
in <path/to/textfile.txt>
打开文件并读取所有行。您可以使用 log line
记录这些行。所有后续文件操作都引用此文件,直到下一个“in”语句。您通常会看到此命令之后紧跟一个 take
或 find all
命令。
示例
in stats/01092019.txt
in <path/to/folder>
如果不存在,将创建嵌套目录结构。否则,该路径将用于未来操作的上下文。
示例
in "/Sublime Text/Packages"
count files as fileCount
log [fileCount]
save [as <filepath>]
将最新集合保存到指定的文件名中。
示例
save as runner/cleaned_userinputs.txt
write [<variable>]
将给定的变量(或最后 find all
的结果)写入使用 in
打开的最后一个文件。
示例
write [userIds]
add *<string | variable>
* [to <filepath>
]
将内容追加到当前未打开的文件中。
示例
add [libraries] to libs.txt
选择
select th [of [input]
]
选择集合中的特定项目,给定其索引。
示例
in bigrams.txt
select 4th
select words [of [input]
][as <output>
]
选择在最后一个打开的文件中找到的所有单词。
示例
in utterances.txt
select words
select [from <string | RegEx | int>
*] [to *<string | RegEx | int>
]
选择从指示的字符串/正则表达式/数字到指示的字符串/正则表达式/数字的范围。注意,我们从 1 开始计数以保持自然顺序。
示例
select from "{" to "}"
select from \s to \s
select from 1 to ";"
select two of [bigrams]
select from <string | RegEx | integer>
选择从指定字符串/正则表达式/数字到行尾的范围。
***示例:***
select from "dateTime"
select from \d\d\d
select from 122
select to <string | RegEx | integer>
选择从行首到指定字符串/正则表达式/数字的范围。
示例
select to "dateTime"
select to \W
select to 5th
select to 370
调试和计算
be <property>
以下可以设置 TSL 的以下属性为 true
verbose
| active
calculate operation
as <variable>
计算数学运算。
示例
calculate (5 * 4) / 2 as ratio
log <variable | string>
输出到控制台。对于变量,请使用带模板标记的字符串(例如:“here is: [varName]”)。
count <variable>
as <countVariable>
存储选择中的行数。
示例
count [entries-per-day] as frequency
log [frequency]
count *<files | folders>
* in <path/to/dir>
as <countVariable>
存储目录中的文件或文件夹数量。
示例
count files in "C:\Windows" as systemFiles
log "Exactly [systemFiles] system files found."
操作
change <varName>
to <formula>
遍历一个集合,并根据模板标签更改所有条目。使用括号标记变量,例如:[varName]
示例
change [salute] to "Hi, [salute] #[i]"
例如,将“我的名字是Dan”更改为“Hi,我的名字是Dan #1”
将<setName>
与<setName>
结合作为<varName>
合并两个集合并存储在新变量中。
示例
combine [vowels] with [consonants] as letters
在<varName>
中查找 *<string | RegEx>
* [作为 <varName>
]
查找当前打开文件或存储的集合中的字符串或正则表达式的所有出现。此搜索的结果将自动存储在变量 found
中
示例
in corpus_de.txt
take lines as utterances
find all [aeiou]+ in [utterances]
log [found]
删除行
删除最后选择的行(例如,使用 find all
找到的行)
将 *<string | RegEx>
* 替换为 <string>
[在 <variable>
中]
使用另一个字符串替换给定的字符串或正则表达式,可选地在特定集合中。
示例
replace \W+ by "_"
排序 [<varName>
]
按字典顺序(升序)对提供的或最后引用的集合进行排序。
排序 [<varName>
] 按照顺序 [<reference>
]
对提供的集合按参考集合的字典顺序(升序)进行排序。
按 <delimiter>
将 <string|RegEx>
分割为 <variable>
使用分隔符将字符串分割成集合。分隔符可以是任意字符的组合或以下关键字之一:括号、逗号、点、连字符、行、括号、点、分号、空格、制表符、下划线。
示例
split apples;bananas;oranges by semicolons as fruits
log [fruits]
unique [<varName>
]
从给定集合中删除所有重复条目。
unique lines
从最后引用的集合中删除所有重复行。
内存
将 <string | variable>
记忆为 <variableName>
将字符串或变量存储在新变量中。
take *<lines | results | files | folders>
* [as <name>
]
将选定的集合更改为整个行(take lines as ...
)、find all
指令的结果,或更改先前与 in <folderPath>
指令指定的文件夹中找到的文件。
示例
in source.txt
find all <[^>]+>
take lines as htmlLines
log [htmlLines]
in libraries/de
take files as germanLibs
log [germanLibs]
流程
for every <variable>
—
循环遍历集合,变量 i
满足当前索引。在这里使用单数形式来遍历集合(books -> book,babies -> baby)。
如果集合为空,for 循环将被跳过。这有助于创建条件流程。
总是使用三连字符在单独的一行中结束循环。
示例
in corpus.txt
find all [^\b]+\b[^\b]+ as bigrams
for every [bigram]
log "#[i]: [bigram]"
---
run path/to/script.tsl
运行另一个 TSL 文件
外部 TSL 文件将接收与内联代码相同的范围。
模板化
模板用方括号括起来,可以出现在引号字符串、文件路径中,甚至正则表达式内。
{
in stats/milestones.tsv
take lines as rows
for every [row]
split by tabs as column
select second as team-name
select 3rd as task
find all [team-name]\:(.*) in [task]
take results
in "stats/[team-name].txt"
write [task]
---
}
如果找不到变量,模板标签将保持不变,包括方括号。这使得我们可以轻松地将它们与正则表达式混合。