我正在使用槌主题建模示例代码,尽管运行良好,但我想知道此语句的参数实际上是什么意思?
instances.addThruPipe(new CsvIterator(new FileReader(dataFile),
"(\\w+)\\s+(\\w+)\\s+(.*)",
3, 2, 1) // (data, target, name) field indices
);
从文档中:
该迭代器(可能更恰当地称为“行模式迭代器”)会基于正则表达式读取文件并每行返回一个实例。
如果您有以下形式的数据
[名称] [标签] [数据]
您感兴趣的电话是
CsvIterator(java.io.Reader input, java.lang.String lineRegex,
int dataGroup, int targetGroup, int uriGroup)
第一个参数是如何读取数据,例如文件读取器或字符串读取器。第二个参数是正则表达式,用于从读取器读取的每一行中提取数据。在您的示例中,您已将(\\w+)\\s+(\\w+)\\s+(.*)
其转换为:
数字3, 2, 1
表示数据排在最后,目标排在第二,名称排在第一。正则表达式基本上可以确保每行的格式均符合文档中所述:
test1 spam Wanna buy viagra?
test2 not-spam Hello, are you busy on Sunday?
CsvIterator
是一个糟糕的名字,因为它实际上不是此类读取的逗号分隔值,而是空格分隔(空格,制表符...)的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句