gpt4 book ai didi

ruby - 在ruby中拆分一个文本文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:42 24 4
gpt4 key购买 nike

我有一个包含几个不同部分的文本文件。每个部分都有一个标题,后跟实际数据。例如:

Header1
x,y,z
x,y,z
x,y,z
Header2
a,b,c
a,b,c
a,b,c

我想一次通读文件并对每个部分下的数据执行不同的操作。我知道如何解析数据,但我无法弄清楚如何为“执行此操作直到命中 Header2,然后执行其他操作直到 Header3,等等”的逻辑编码。

我正在使用 ruby​​,但我还没有真正遇到任何这样做的例子。有什么建议么?

最佳答案

最简单的做法是:

# Process lines for header1
def do_header1(line)
puts line.split(/,/).join("|")
end

# Process lines for header2
def do_header2(line)
puts line.split(/,/).map{ |e| e.upcase}.join(",")
end

header1 = false
header2 = false

# Main loop
File.open("file.txt").each_line do |line|
if line.chomp == 'Header1' # or whatever match for header1
header1 = true
header2 = false
next
end
if line.chomp == 'Header2' # or whatever match for header2
header1 = false
header2 = true
next
end

do_header1(line) && next if header1
do_header2(line) && next if header2

end

如果 header 的数量变得太多,您可以开始使用整数跟踪 header :

header = -1

# Main loop
File.open("file.txt").each_line do |line|
if line.chomp == 'Header1' # or whatever match for header1
header = 1
next
end
if line.chomp == 'Header2' # or whatever match for header2
header = 2
next
end

do_header1(line) && next if header == 1
do_header2(line) && next if header == 2

end

关于ruby - 在ruby中拆分一个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com