我有一个输入文本文件“input.txt”,如下所示:
for prod in itertools.product(*[['a', 'b', 'c', 'd', 'e', 'f']]*len_of_char ):
print prod
如何从每一行中提取第一个,第二个和第三个字符串?
此代码将整行映射到数组的一个字段:
Country Code ID QTY
FR B000X2D 75 130
FR B000X2E 75 150
哪个输出:
f = File.open("input.txt", "r")
line_array = []
f.each_line { |line| line_array << line }
f.close
puts line_array[1]
此外,如何根据数量编号将一行拆分为更多行
FR B000X2D 75 130
以便输出为:
max(quantity) = 50 per line
答案 0 :(得分:4)
如果这是空格分隔的,那么分解起来应该很容易:
File.readlines('input.txt').map do |line|
country, code, id, qty = line.chomp.split(/\s+/)
[ country, code, id.to_i, qty.to_i ]
end
您也可以轻松拒绝任何您不想要的行,或者选择您要执行的行,此外,这有助于删除标题:
File.readlines('input.txt').reject do |line|
line.match(/\ACountry/i)
end.map do |line|
country, code, id, qty = line.chomp.split(/\s+/)
[ country, code, id.to_i, qty.to_i ]
end.select do |country, code, id, qty|
qty <= 50
end
答案 1 :(得分:2)
如果这些是制表符分隔的条目,请使用CSV类。 CSV代表&#34;逗号分隔值&#34;但是你可以提供自己的分隔符
require 'csv'
CSV.foreach("fname", :row_sep => "\t") do |row|
# use row here...
end
请参阅https://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html