我想从文本文件中获取值并分配给循环中的变量如何实现它。
data.text
文件包含两列
Name, Age ABC , 31 def , 41 ghi , 51
我想从中挑选名称并指定给$name
然后采用下一个值年龄并分配给$age
。我将通过序列获取这些直到文件结尾。
我尝试使用foreach
&行,但能够获取完整的行可能这可以通过使用正则表达式或列表,但不知道如何使用它
请帮助您提供示例程序
答案 0 :(得分:1)
这看起来像一个CSV文件。您想使用proper CSV parser。
package require csv
set f [open "data.text"]
# Skip the header line; we could parse it, but we won't
gets $f
# Parse the remaining lines
while {[gets $f line] >= 0} {
lassign [csv::split $line] name age
# Your data has extra spaces in it, it seems; we deal with that here
set name [string trim $name]
set age [string trim $age]
# Now we'll do something with that
puts "name is '$name', age is '$age'"
}
close $f
使用Tcl 8.6,您可以更直接地整合修剪:
lassign [lmap value [csv::split $line] {string trim $value}] name age
但这纯粹是一种改进。 (8.5之前没有lmap
;你可以用foreach
编写它等等,但是没有真正的意义;你可以直接编写代码而不用它当只有两个字段时。)