在tcl中解析文本文件并创建键值对的字典,其中值是列表格式

parsing text file in tcl and creating dictionary of key value pair where values are in list format

如何分离以下文本文件并只保留相应的数据:

例如文本文件有格式:

Name Roll_number Subject Experiment_name Marks Result
Joy  23          Science Exp related to magnet 45 pass
Adi  12          Science Exp electronics       48 pass
kumar 18         Maths   prime numbers         49 pass
Piya 19          Maths   number roots          47 pass
Ron 28           Maths   decimal numbers       12 fail

解析以上信息并存储在字典中,其中键是主题(唯一)并且与主题对应的值是通过列表学生姓名

set studentInfo [dict create]; # Creating empty dictionary
set fp [open input.txt r]
set line_no 0
while {[gets $fp line]!=-1} {
    incr line_no
    # Skipping line number 1 alone, as it has the column headers
    # You can alter this logic, if you want to 
    if {$line_no==1} {
        continue
    }
    if {[regexp {(\S+)\s+\S+\s+(\S+).*\s(\S+)} $line match name subject result]} {
        if {$result eq "pass"} {
            # Appending the student's name with key value as 'subject'
            dict lappend studentInfo $subject $name
        }
    }
}
close $fp
puts [dict get $studentInfo]

输出:

Science {Joy Adi} Maths {kumar Piya}