我有一个名为ama.txt的文件,文件内容如下:
name age hobby sex
amit 45 music male
sumit 35 cricket female
现在我可以这样打开文件:
File.open("ama.txt").each do
end
如何修改文件的hobby
列?
答案 0 :(得分:16)
这种情况的一般模式大致如下:
cols = line.split(/\s+/)
这样的东西然后你想要编辑cols[2]
,虽然我不知道这些变化是否符合模式或什么。最后,不要太粗鲁,但似乎你并不熟悉Ruby。为什么Ruby是一个要求?你知道另一种脚本语言吗?你对Ruby有多了解?一般来说,这里的人会帮助你解决问题,但不是简单地为你编写代码。
回答Amit关于第4步的问题:如果你有一个新的文件打开写,你将有一个文件句柄 - 程序中一个指向打开文件的变量。您可以使用filehandle作为puts
的接收者来写入该文件。这看起来很奇怪,因为puts
通常看起来像一个函数,但是 a method call in Ruby。在irb
或简短的Ruby脚本中试试这个:
fh = File.open('test.txt', 'w')
fh.puts "hello, world"
fh.close
另一个简短的例子:
#!/usr/bin/env ruby
out_file = File.open('output.txt', 'w')
File.open('input.txt', 'r').each do |line|
out_file.print line.sub('foo', 'bar')
end
out_file.close
# no need to close the input file since the block version closes it for us
# automagically
# Maybe better to put the whole thing in a double block, though you may
# find this harder to follow at first
File.open('output.txt', 'w') do |out_file|
File.open('input.txt', 'r').each do |line|
out_file.print line.sub('foo', 'bar')
end
end
答案 1 :(得分:1)
File.readlines("ama.txt").each do |line|
row = line.strip.split('\t') # use your delimiter symbol
row[2] = ... # hobby column
end
或者只使用fastercsv gem。