【发布时间】:2013-11-28 15:44:56
【问题描述】:
我正在尝试编写一个 ruby 代码来从不规则文本内容中提取特定位置的数据。
以下是我正在查看的文本内容。
Address1 Address2
adress1, adress1, # 34 , adress1,
4th Floor, Plot # 14 & 15,
Drive,, HARIKA BHIMANI
Madhapur, Hyderabad - 500081 2-14-117/35-1 Nas
Andhra Pradesh AP
+(91)40-00000000
xyz@dabc.com
这是我的奇怪文本,我想分别提取 Address1 和 Address2。 我想我会尝试拆分,但没有得到如何分别提取 Address1 和 Address2,因为它们都在一行中。 Address1 和 Address2 的内容之间的空间肯定会超过 2 个空间。
我打算解析每一行并在每一行中分割字符串,分隔符超过 1 个空格。如何使用超过两个空格的分隔符分割 ruby 中的字符串?
我们可以忽略上面文本中的前 2 行,从第 3 行开始。基本上我想分离左侧和右侧数据。分隔符多于 2 个空格。我已经用我的示例编码编辑了这个问题,但是如果左侧数据中的一行是空的,它就会失败
我尝试了以下示例
if !line.empty?
splits = line.split(/ {2,}/)
case splits.length
when 2
puts "Address1 "+ splits[1]
when 3
puts "Address1 "+ splits[1]
puts "Address2 "+ splits[2]
else
end
end
但以下示例失败
leftSideHasData rightSideHasData
OnlyRightSideHasData
如何在 Ruby 中实现这一点? ruby 是否提供任何 api 来轻松做到这一点?
【问题讨论】:
-
你需要能够确认文本会遵循特定的模式,如果可以的话我可以帮你解析它,否则......
-
您能否确保顶部的空白与它们下方的其余列保持一致。
-
嗨我们可以忽略上面文本中的前2行,从第3行开始。基本上我想分离左侧和右侧数据。分隔符多于 2 个空格。我已经用我的示例编码编辑了这个问题,但是如果左侧数据中的一行是空的,它就会失败
标签: ruby parsing extract text-parsing