Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia迭代器,它解析文件中的每一行_Julia - Fatal编程技术网

Julia迭代器,它解析文件中的每一行

Julia迭代器,它解析文件中的每一行,julia,Julia,我是朱莉娅的新手,我想这是一个常见的场景: 我想要一个迭代器,它一次解析一行文本文件。因此,就像eachline(f),除了对每一行应用函数parse。如果愿意,可以调用结果eachline(parse,f)(如带有额外函数参数的open版本):映射parse到eachline 更具体地说:我有一个函数偏序集(s::String),它将偏序集的字符串表示形式转换为偏序集: function poset(s::String) nums = split(s) ... retu

我是朱莉娅的新手,我想这是一个常见的场景:

我想要一个迭代器,它一次解析一行文本文件。因此,就像
eachline(f)
,除了对每一行应用函数
parse
。如果愿意,可以调用结果
eachline(parse,f)
(如带有额外函数参数的
open
版本):映射
parse
eachline

更具体地说:我有一个函数
偏序集(s::String)
,它将偏序集的字符串表示形式转换为偏序集:

function poset(s::String)
    nums = split(s)
    ...
    return transitiveclosure(g)
end
现在我想说些

open("posets7.txt") do f
    for p in eachline(poset, f)
        #something
    end
end
(我特别需要一个迭代器:我的文件相当大,所以我真的想一次解析一行)。

在这种情况下,我(个人)会使用:

open("posets7.txt") do f
    for p in Iterators.map(poset, eachline(f))
        # do something
    end
end
但是,正如文档所述(以及您自己发现的),这相当于使用:


我刚刚学会了我可以为p-in做
(poset(x)for x-in-eachline(f))
这对我来说已经足够好了。谢谢弗朗索瓦!我对你的建议所做的唯一改进就是添加一个
if!将占位符(r“^\s*(?:#|$)”,x)
插入生成器,以便忽略注释行。
open("posets7.txt") do f
    for p in (poset(x) for x in eachline(f))
        # do something
    end
end