使用 Julia 和 Regex 从文件中收集字符串并写入输出文件

Collecting strings from files and writing to an output file using Julia and Regex

(Julia 和通用编程新手)

我正在尝试读取一个充满 JSON 个文件的目录,其中包含大量 HTML 页(大约 30 页)、正则表达式匹配短字符串(每个文件很多,总共多达 60k)和将这些输出到一个大文件 - 我稍后会尝试解析它,以便我可以添加到 MySQL 数据库。

这是我的代码:

patFilename = r"[0-9]+_[0-9]+.json"
patID = r"\/entry\/[0-9]+\/go"

filenames = readdir("C:/getentries/data/")

caseIDs = []

for filename in filenames
    if match(patFilename, filename) === nothing
        continue
    end

    file = open("C:/getentries/data/" * filename)
    case = read(file, String)

    push!(caseIDs, match(patID, case))

end

println(caseIDs)

touch("C:/getentries/data/caseIDs.txt")
open("C:/getentries/data/caseIDs.txt", "w") do caseID
    println(caseID, caseIDs)
end

没有抛出任何错误,但只有少数字符串被写入文件。所以我假设在尝试收集所有字符串时出现问题。

我想我可以试试 但这没有用 - 虽然这可能是因为我完全没有经验!

请问大家有什么想法吗?

如果没有最小的、可重现的例子,很难说。但我的猜测是,由于每个文件调用 match 一次,因此每个文件中只会获得第一个匹配项。相反,您可以调用 eachmatch 来获取文件内容中所有匹配项的迭代器。

这看起来像下面这样:

for filename in filenames
    # Note that you forgot to close the file in your original example
    # Using higher-level functions such as this method of `read` may be safer
    str = read(filename, String)
   
    # Loop over all matches of the regexp found in the string
    for m in eachmatch(pattern, str)
        push!(matches, m)
    end
end