首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中收集字符串并使用Julia和Regex写入输出文件

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

Stack Overflow用户
提问于 2021-01-03 16:22:17
回答 1查看 89关注 0票数 2

(Julia和general programming newb)

我正在尝试读取一个包含大量HTML页面(大约30页)的JSON文件目录,Regex匹配短字符串(每个文件很多,总计高达60k ),并将这些字符串输出到一个大文件中--稍后我将尝试并解析这些文件,以便将其添加到MySQL DB中。

这是我的密码:

代码语言:javascript
复制
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

没有抛出错误,但只向文件写入了几个字符串。所以当我试图收集所有的字符串时,我假设出了一些问题。

我想我可以尝试approach suggested in my last question,但这没有帮助-尽管这很可能是因为我完全缺乏经验!

我能问问有没有人有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-03 20:07:06

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

以下内容如下所示:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65552134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档