(Julia和general programming newb)
我正在尝试读取一个包含大量HTML页面(大约30页)的JSON文件目录,Regex匹配短字符串(每个文件很多,总计高达60k ),并将这些字符串输出到一个大文件中--稍后我将尝试并解析这些文件,以便将其添加到MySQL DB中。
这是我的密码:
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,但这没有帮助-尽管这很可能是因为我完全缺乏经验!
我能问问有没有人有什么想法吗?
发布于 2021-01-03 20:07:06
如果没有一个最小的,可重复的例子,很难说。但我的猜测是,由于每个文件只调用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
endhttps://stackoverflow.com/questions/65552134
复制相似问题