How do you add a new line after you have split a text file with
continuous values delimited with commas? Thanks in advance. MC
For example:
textfile contains: value1,value2,value3…
I want to output this file like this:
value1
value2
value3
#Here is my code:
File.open(‘temp.txt’, ‘r’) do |temp|
arraym = [] #<–I am using array so that I can use array functions
…but I dont have to use array for this
temp.each_line do |line|
arraym= line.split(",",0)
b.puts “”
b.puts arraym # + “\n”
b.puts “”
end
end
You should just be able to split each line on ‘,’ which will give you an
array of values in the line. Then you can just puts the array. Here’s a
little IRB session with some ideas.
line = “value1,value2,value3”
=> “value1,value2,value3”
values = line.split(’,’)
=> [“value1”, “value2”, “value3”]
values.each { |value| puts value }
value1
value2
value3
=> [“value1”, “value2”, “value3”]
puts values
value1
value2
value3
=> nil
Regards,
Craig
I tried that, it didn’t work that way. I am not sure what is hidden in
the file that makes the values not separate. I’ll keep digging. Thanks
I’m new to Ruby but I just read a book that had an example that is
similar to this. I’ve changed the code to see if I can solve this
problem and it seems to do it.
#code:
lines = File.readlines(“temp.txt”)
values = lines.split(/,/)
output_file = File.open(‘output.txt’, ‘w’)
values.each do |line|
output_file.puts line
end
result should be:
value1
value2
value3
value4
On 05.03.2009 16:07, Mmcolli00 Mom wrote:
#Here is my code:
File.open(‘temp.txt’, ‘r’) do |temp|
arraym = [] #<–I am using array so that I can use array functions
.but I dont have to use array for this
This creation of the empty Array is completely superfluous as you do
nothing with this Array. You even do not need to declare the variable
outside of the block since you use it inside only and do not retain
values between iterations (lines).
temp.each_line do |line|
arraym= line.split(",",0)
b.puts ""
b.puts arraym # + "\n"
b.puts ""
end
end
It can be as simple as
File.foreach “temp.txt” do |line|
puts “”, line.split(/,/), “”
end
You can as well do
File.foreach “temp.txt” do |line|
printf “\n%s\n”, line.gsub(/,/, “\n”)
end
Kind regards
robert
Do you know how to attach a string on the end of each value before
splitting into a new line? For instance…
value1 comments
value2 comments
value3 comments
I tried this using Robert’s code, however, it put the comments on a
newline.
File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end
Thanks everyone for your help.
MC
On Thu, Mar 5, 2009 at 4:58 PM, terminate [email protected] wrote:
values.each do |line|
output_file.puts line
end
Just a comment here. It’s usually better to use the block form of open,
since that will take care of closing the file, even when an error
happens:
File.open(‘output.txt’,‘w’) do |output_file|
#…
end
Jesus.
On Fri, 2009-03-06 at 00:43 +0900, Robert K. wrote:
value3
values between iterations (lines).
Kind regards
robert
rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file.txt
rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file2.txt
rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file1.txt
rthompso@raker /tmp $ cat filetxt
value1,value2,value3
value1,value2,value3
value1,value2,value3
rthompso@raker /tmp $ ruby -p -i -e ‘gsub(/,/, “\n”)’ file.txt
rthompso@raker /tmp $ cat file*txt
value1
value2
value3
value1
value2
value3
value1
value2
value3
Do you know how to add a comment before each line splits values?
value1 comments
value2 comments
value3 comments
I tried this using Robert’s code, however, it put the comments on a
newline.
File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end
On Mar 5, 11:10 am, Jesús Gabriel y Galán [email protected]
wrote:
output_file = File.open(‘output.txt’, ‘w’)
Jesus.
Thanks for the clarification Jesus!
Reid is that for rake only?
Robert I used the variant gsub and it only puts a comment behind one
value and not all of them. Thanks for helping.
MC
File.foreach “temp.txt” do |line|
newLine = “\n%s\n”, line.gsub(/,/, “comment” + usercomment+ “\n”)
puts newLine
end
On 05.03.2009 17:06, Mmcolli00 Mom wrote:
File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end
You’d rather choose the variant with gsub for this.
robert
Mmcolli00 Mom wrote:
Reid is that for rake only?
I don’t understand your question.
$ ruby -pe ‘gsub(/,/, “\n”)’ file*.txt
The above can be executed from the command line, from a shell script,
from a
backtic
command, or a system command, etc… Is that what you are
asking?
btw see
analogous to
google search for
sed one liners
perl one liners
python one liners
lang of choice one liners
Okay this is stupid
Can I know which programming is this