2014-01-08 4 views
1

В качестве части усилий по очистке данных мне нужно добавить строку в конец каждой строки данных.Объединение строк с помощью << добавляет неожиданные новые строки

export = File.new('C:\clean_file.txt' , 'w+') 

File.open('C:\dirty_file.txt').each_with_index do |line, index| 
    start_string = line.to_s 

    # start_string => "23-SEP-13","201309","208164","F5140" 
    # some gsub code on start_string... 
    # start_string => "09/23/2013","201309","208164","Customer1" 

    decoded_string = start_string 
    decoded_string << %q(,"Accounts") 
    export.puts decoded_string 
end 

Однако, когда я пытаюсь добавить строку с оператором < <, я получаю дополнительный возврат каретки:

# clean_file.txt looks like this => 
line1: "09/23/2013","201309","208164","Customer1" 
line2: ,"Accounts" 
line3: "09/24/2013","201309","208165","Customer2" 
line4: ,"Accounts" 
# etc. 

Я пробовал:

decoded_string = start_string + %q("Accounts") 

но получил тот же результат, и кажется, что < < является предпочтительным способом конкатенации строк в Ruby. Как я должен добавлять строки, чтобы убедиться, что «clean_file.txt» выглядит следующим образом?

# clean_file.txt SHOULD love look like this => 
line1: "09/23/2013","201309","208164","Customer1","Accounts" 
line2: "09/24/2013","201309","208165","Customer2","Accounts" 
# etc. 
+1

Dan, more Ruby-like будет: 'export.puts (line.chomp.gsub (...) <<% q (,« Учетные записи »))'. –

+0

Thanks Cary - идиоматическая информация, подобная этому, очень полезна для новичка, подобного мне. –

ответ

3

Изменить

start_string = line.to_s 

в

start_string = line.chomp 

Переводы строки поступают из прочитанных строк из файла.

+0

Мэтт - вы решили решить мою проблему отлично. Спасибо огромное! –

Смежные вопросы