【发布时间】:2020-02-16 11:01:36
【问题描述】:
Loop = (
{
Value = (
{
{
Key :
{
A = "B";
C = "D";
Class = (
{
section = "section_a";
Pairs = (
{
Name = "Ram";
Mark = "80";
},
{
Name = "Latha";
Mark = "70";
},
{
Name = "Mohan";
Mark = "90";
},
{
Name = "David";
Mark = "76";
} );
} );
Id = 1;
};
Absent :
{
DAYS = "Two days";
};
},
{
Key :
{
A = "B";
C = "D";
Class = (
{
section = "section_b";
Pairs = (
{
Name = "Ram";
Mark = "30";
},
{
Name = "Latha";
Mark = "45";
},
{
Name = "Mohan";
Mark = "100";
},
{
Name = "David";
Mark = "76";
} );
} );
Id = 2;
};
Absent :
{
DAYS = "Four days";
};
},
} );
} );
我是 tcl 脚本的新手。我有一个上述格式的txt文件。使用 tcl 脚本,我必须将字符串(部分、名称、标记和缺席天数)存储在不同的变量中以存储在 csv 文件中。 我尝试了下面的代码来搜索单词 Key
set search "Key"
set file [open "Marks.txt" r]
while {[gets $file data] != -1} {
if {[string match *[string toupper $search]* [string toupper $data]] } {
puts "Found '$search' in the line '$data'"
} else {
puts "does not match"
}
}
它正在查找单词 key 并在匹配时打印。它适用于包含单词Key 的那一行。但是,在这里我想找到单词Loop,然后我想在侧循环中搜索单词Key。如果它看到单词Key,那么它必须将循环中存在的一些字符串复制到变量中。单词Key 将在文件中重复多次。在Key 这个词之后会有{..} 到处都是文件有一些内容。脚本必须读取内容并将其存储在某个变量中。
Exp:脚本需要在文本文件中找到单词Key,然后查找
如果部分存在,则 section_b 需要存储在变量 temp1(exp.temp1=section_a) 中,同样明智:
如果它看到Ram,则需要将行下方的Mark 存储在temp2 中(exp.temp2=80)。
如果它看到Latha,则需要将行下方的Mark 存储在temp3(exp.temp3=70)中。
然后找到 id 需要存储的值 1 需要存储在temp4(exp.temp4=1)。
然后Days 需要存储在temp5(exp.temp5=Two days)
每次在以下格式的文本文件中看到单词Key时,都需要将这些临时值写入csv文件。
section Ram Latha id Days
Section_a 80 70 1 Two days
Section_b 30 45 2 Four days
你能帮我写 tcl 脚本来得到这个吗?谢谢。
【问题讨论】:
-
这是您尝试在那里解析的中等复杂格式...
-
这是更多的初步工作,但是如果您对这种文件格式做了很多工作,那么使用 tcllib 中的解析器生成器来制作一个包来读取该格式可能是值得的。
标签: tcl