問題が最後に発生したとき: Parsing and structuring of a text file 複雑な条件が想像されるようになりました。 たとえば、私は次にテキストファイルを持っていた:複数レベルの解析テキスト
Head 1
Subhead 1
a 10
b 14
c 88
Subhead 2
a 15
b 16
c 17
d 88
Subhead 3
a 55
b 36
c 87
Head 4
Subhead 1
r 32
t 55
s 79
r 22
t 88
y 53
o 78
p 90
m 44
Head 53
Subtitle 1
y 22
b 33
Subtitle 2
a 88
g 43
r 87
Head 33
Subhead 1
z 11
d 66
v 88
b 69
Head 32
Subhead 1
n 88
m 89
b 88
Subhead 2
b 88
m 43
私は次の飛行機に構造テキストが必要です。私は次のデータを取得したい:
Head 1, Subhead 1, c 88
Head 1, Subhead 2, d 88
Head 4, Subhead 1, t 88
Head 53, Subhead 2, a 88
Head 33, Subhead 1, v 88
Head 32, Subhead 1, n 88
Head 32, Subhead 1, b 88
Head 32, Subhead 2, b 88
つまり、私は88頭とサブヘッドを示すすべての行を取得したい。
私のアクション:
lines = File.open("file.txt").to_a
lines.map!(&:chomp) # remove line breaks
current_head = ""
res = []
lines.each do |line|
case line
when /Head \d+/
current_head = line
when /Subhead/
sub = line
when /\w{1} 88/
num = line
res << "#{current_head}, #{sub}, #{num}"
end
end
puts res
私はこの方法を使用する場合、私はNUM値なしで文字列を取得します。
タスクを実行するかどうかは、「可能な場合」を意味しますか?
はあなたのソリューションをありがとう! – Misha1991