所以我在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