微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ruby​​ 中解析多行固定宽度的文本文件

如何解决在 ruby​​ 中解析多行固定宽度的文本文件

我正在尝试用 ruby​​ 解析多行固定宽度文件,但似乎无法解析所需的信息。当信息在 1 行时,我可以很好地解析。例如:

Name      LastName         dob
John      Doe              01/01/2001
Jane      Doe              01/02/2002

但我面临的挑战是文件是否具有如下结构

This message needs to be                 AccountId: 7854639
parsed in a single key                   Phone: 823972839563
of the json that I want to produce       Email: test@test.com

多行文本总是在相同的坐标上,而且是动态的。例如,不确定如何解析它并映射到 json 值。

解决方法

str = "This message needs to be          AccountId: 7854639
parsed in a single key                   Phone: 823972839563
of the json that I want to produce       Email: test@test.com"

p str.scan(/([^\s]+:[^\n]+)/).flatten

Ruby demo

,

这是一种简单的非高尔夫方法:

freeform_text = str.split('\n').map do |s|
  m = s.match(/^(.*)\s+(.*):(.*)$/)
  m[1] ? m[1].strip : ''
end.join(' ')

# Produces:
# "This message needs to be parsed in a single key of the json that I want to produce"

还有其他更惯用的方法,但这可以为您指明方向。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。