take text from file and add do it with Ruby..?

Z

Zoe Phoenix

I have a text file that I want to add some content to, but I'm not sure
how to use the file as input. I have a list of things in the file that
is formatted like


item1 | item2 | item3 | item4 |

and etcetera... How can I take these items and put each of them on a new
line, minus the "|" and add a certain phrase afterward? Like:

item1 [phrase]
item2 [phrase]
item3 [phrase]

Is there a simple way to do this? I've taken lists of things like this
before and added text to it, but I put all of the items in an array
manually first... would someone show me a faster way, please?
 
S

Sandro Paganotti

Try this:

ph_hashes = Hash.new("no phrase").merge({
:item1 => "phrase 1",
:item2 => "phrase 2",
:item3 => "phrase 3"
})

File.open("yourfile_o.txt","w") do |file|
file.write File.open("yourfile.txt").readlines.join("\n").gsub(/([^\|]+)\|/){
"#{(v=$1.strip) + " " + ph_hashes[v.to_sym]}\n"}
end

I have a text file that I want to add some content to, but I'm not sure
how to use the file as input. I have a list of things in the file that
is formatted like


item1 | item2 | item3 | item4 |

and etcetera... How can I take these items and put each of them on a new
line, minus the "|" and add a certain phrase afterward? Like:

item1 [phrase]
item2 [phrase]
item3 [phrase]

Is there a simple way to do this? I've taken lists of things like this
before and added text to it, but I put all of the items in an array
manually first... would someone show me a faster way, please?
 
R

Raveendran Jazzez

Zoe said:
I have a text file that I want to add some content to, but I'm not sure
how to use the file as input. I have a list of things in the file that
is formatted like


item1 | item2 | item3 | item4 |

and etcetera... How can I take these items and put each of them on a new
line, minus the "|" and add a certain phrase afterward? Like:

item1 [phrase]
item2 [phrase]
item3 [phrase]

Is there a simple way to do this? I've taken lists of things like this
before and added text to it, but I put all of the items in an array
manually first... would someone show me a faster way, please?

Hi Zoe,
Ruby program
**********

full= File.open("orig.txt")
phrase=["phrase1","phrase2","phrase3"]
count=0
full.each do |line|
first=[]
first=line.split(/\|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + (phrase [count]).to_s
puts main
count+=1
end
end

***********************************
Orig.txt
******

item1 | item2 | item3 | item4 |
item11 | item21 | item31 | item41 |
item12 | item23 | item34 | item45 |
item13 | item23 | item33 | item43 |
item14 | item24 | item34 | item44 |
***********************************
Output
******
ruby file.rb item1phrase1
item2phrase2
item3phrase3
item4

item11
item21
item31
item41

item12
item23
item34
item45

item13
item23
item33
item43

item14
item24
item34
item44
Exit code: 0
*********************************

I dont know this one is very simple but it satisfies ur need


Regards,
P.Raveendran
RailsFactory
http://raveendran.wordpress.com
 
Z

Zoe Phoenix

Hi Zoe,
Ruby program
**********

full= File.open("orig.txt")
phrase=["phrase1","phrase2","phrase3"]
count=0
full.each do |line|
first=[]
first=line.split(/\|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + (phrase [count]).to_s
puts main
count+=1
end
end




how can I save the output to a file? I see where you're making it print
the output with "main", but when I try to save it to a file the way I
have with other programs I've made, I get an error... it says the
variable "main" is undefined. Help?
 
R

Raveendran Jazzez

Try this one.....

full= File.open("orig.txt")
phrase=["phrase1","phrase2","phrase3"]
count=0
inside=[]
full.each do |line|
first=[]
first=line.split(/\|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + " "+(phrase [count]).to_s

inside << main

newfile=File.new("orig2","w")
newfile.puts inside
newfile.close

count+=1
end
end


Regards,
P.Raveendran
RailsFactory
http://raveendran.wordpress.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top