Ruby 从csv中读取一列,并使用以前的列数据创建新列

Ruby 从csv中读取一列,并使用以前的列数据创建新列,ruby,string,csv,Ruby,String,Csv,在源图像的“id”列中,目标图像中“-”id章节号之前和“-”之后的第一个数字,即目标图像中的韵文。在诗句中,我从“-”之后创建数据块。我试了几句话,但不明白我应该如何前进 我需要从csv文件中读取此数据 我想制作这个格式 chapter=[] 韵文=[] CSV.foreach('test_file.CSV')do|row| 如果(第[3]行!=“id”&第[3]行!=nil) 第二章我写了下面的答案。 我正在阅读内容相同的csv文件 chapter=[] 韵文=[] 温度=[] pos=0

在源图像的“id”列中,目标图像中“-”id章节号之前和“-”之后的第一个数字,即目标图像中的韵文。在诗句中,我从“-”之后创建数据块。我试了几句话,但不明白我应该如何前进

我需要从csv文件中读取此数据

我想制作这个格式

chapter=[]
韵文=[]
CSV.foreach('test_file.CSV')do|row|
如果(第[3]行!=“id”&第[3]行!=nil)
第二章我写了下面的答案。
我正在阅读内容相同的csv文件

chapter=[]
韵文=[]
温度=[]
pos=0
CSV.foreach(“test_file.CSV”)do|行|
划船
如果(第[1]行!=“id”&第[1]行!=nil)
第0章)
否=行[1]。分区(“-”)。最后
第1节=(第1节至第1节)
更新的诗句=诗句号<10?“0”+诗句编号至:诗句编号至
插入诗句(位置,临时[位置]+“-”+更新的诗句)
为什么是“01 09-12”?它不应该是“01 09-11”和“01 12-99”吗?源图像列“id”的第一个数字是章节,第二个数字是块,如:第一行01-01,第二列01-04。然后两行的第一个01是将存储在单独列中的章节。第一行的第二个01和第二行的04将在单独的列中存储为小于第一个01-03的块1。
chapter = []
verse = []
CSV.foreach('test_file.csv') do |row|   
 if (row[3] != "id" && row[3] != nil)
    chapter << row[3].partition("-").first
    verse << row[3].partition("-").last
 end
end
chapter = []
verse = []
temp = []
pos = 0

CSV.foreach("test_file.csv") do |row|
    puts row
    if (row[1] != "id" && row[1] != nil)
        chapter << row[1].partition("-").first
        if(temp.size>0)
            no = row[1].partition("-").last
            verse_no = (no.to_i - 1)
            updated_verse = verse_no < 10 ? "0"+verse_no.to_s : verse_no.to_s
            verse.insert(pos, temp[pos]+ "-" + updated_verse)
            temp << no
            pos = pos + 1
        else
            temp << row[1].partition("-").last
        end
    end
end
puts verse
puts chapter