regex - 使用 Julia 和 Regex 从文件中收集字符串并写入输出文件
问题描述
(Julia 和通用编程新手)
我正在尝试读取一个包含大量 HTML 页面(大约 30 个)的 JSON 文件的目录,正则表达式匹配短字符串(每个文件很多,总共最多 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
不会引发任何错误,但只会将几个字符串写入文件。因此,当我尝试收集所有字符串时,我假设出了点问题。
我以为我可以尝试上一个问题中建议的方法,但这并没有帮助-尽管这可能是由于我完全没有经验!
请问有人有什么想法吗?
解决方案
如果没有一个最小的、可重复的例子,很难说。但我的猜测是,由于您对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
推荐阅读
- javascript - 无法让 moment().utc() 返回 2 位数的月份和年份
- python - 尝试通过 Web 浏览器将数据加载到数据库中:禁止 save() 以防止由于未保存的相关对象“船”而导致数据丢失
- ios - 我正在尝试在 TableViewController 中加载 collectionView 并将 collectionView 添加到 tableView 的子视图中
- python - 我无法从 Python 为 Tkinter GUI 运行我的可执行文件。我怎样才能解决这个问题?
- android - OkHttp 拦截器和 CookieJar 不适用于最新的华为,如 P40
- c# - C# 尝试发送查询
- javascript - d3 - 在同一页面上使用 D3 v3 和 D3 v4
- node.js - Discord JS - 如何从 JSON 获取图像 url?
- python - Python:检查文件是否存在并仅复制丢失的文件
- reactjs - 创建一个以屏幕中间为中心的动态宽度 TextInput