所以我在Ruby中编写了一些代码将文本文件分割成单独的行,然后根据分隔符对这些行进行分组。然后将此输出写入一个数组,该数组传递给一个方法,该方法将HTML分成一个文本文件。当我尝试在不同的方法中使用gsub替换HTML文本文件中的占位符时,我开始遇到问题,它使用record
数组中的值 - Ruby不断告诉我传递了nil值。在试图调试该程序的几小时后,我决定寻找其他地方,并且我认为我正在做一些事情。该程序的修改版本在下面发布。Ruby:为什么我的数组中所有字符串的末尾都有`nil`?
这里是输入文本文件的样本:
26188
WHL
1
Delco
B-7101
A-63
208-220/440
3
285 w/o pallet
1495.00
C:/img_converted/26188B.jpg
EDM Machine Part 2 of 3
AC Motor, 3/4 Hp, Frame 182, 1160 RPM
|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
下面是代码的片段,我一直在测试:
# function to import file as a string
def file_as_string(filename)
data = ''
f = File.open(filename, "r")
f.each_line do |line|
data += line
end
return data
end
Dir.glob("single_listing.jma") do |filename|
content = file_as_string(filename)
content = content.gsub(/\t/, "\n")
database_array = Array.new
database_array = content.split("|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|")
for i in database_array do
record = Array.new
record = i.split("\n")
puts record[0]
puts record[0].class end
end
当该代码运行,我得到这样的输出:
[email protected]:~/code/ruby/idealm_db_parser$ ruby putsarray.rb
26188
String
nil
NilClass
...这意味着,在record
各阵列位置显然有数据类型String
和类型nil
。为什么是这样?
'file_as_string(fn)'可以简单地写成'File.read(fn)'。你也可以省略两行说'Array.new'。 – pilcrow 2011-03-03 16:50:06
啊,好的。谢谢。 – eckza 2011-03-03 17:29:05