我正在尝试使用 Ruby 来“标记”CSV 表中的记录,具体取决于特定字段是否包含重复的某个短语。我不确定是否有库可以帮助完成这类工作,而且我认识到 Ruby 可能不是做这类事情的最有效的语言。
我的 CSV 表包含我要搜索的唯一 ID 和文本字段:
ID,NOTES
1,MISSING DOB; ID CANNOT BE BLANK
2,INVALID MEMBER ID - unable to verify
3,needs follow-up
4,ID CANNOT BE BLANK-- additional info needed
从这个 CSV 表中,我提取了关键字并为它们分配了一个标签,该标签已存储在另一个 CSV 表中。
PHRASE,TAG
MISSING DOB,BLANKDOB
ID CANNOT BE BLANK,BLANKID
INVALID MEMBER ID,INVALIDID
请注意,除了我已识别并想要映射的短语之外,我的源代码中的 NOTES 列还包含标点符号和其他短语。此外,并非所有记录都有匹配的短语。
我想创建一个看起来像这样的表:
ID, TAG
1, BLANKDOB
1, BLANKID
2, INVALIDID
4, BLANKID
或者,交替使用用另一个字符分隔的标签:
ID, TAG
1, BLANKDOB; BLANKID
2, INVALIDID
4, BLANKID
我已将映射表加载到哈希中,以短语为键。
phrase_hash = {}
CSV.foreach("phrase_lookup.csv") do |row|
phrase, tag = row
next if name == "PHRASE"
phrase_hash[phrase] = tag
end
散列的键是我想要遍历的搜索短语。我无法在 Ruby 中表达我接下来想做什么,但我的想法是:
将 NOTES 表加载到数组中。对于每个短语(即键),从包含该短语的数组中选择记录,收集与这些行关联的 ID,并将它们与该短语的关联标记一起输出,如上所述。
任何人都可以帮忙吗?