从R / Python中的非结构化数据中提取数据集

时间:2015-09-22 10:34:26

标签: python r

我们正试图从旅行要求中提取旅行路线,这些旅行要求由标准化审计员填写。

Couldn't upload the image

示例:

EY  275   13FEB HYDAUH 0425   0715  

这里的数据意味着如下

EY> Travel Type
275> Flight Number
13FEB> Date of travel
HYDAUH>Airports involved during the Departure and arrival.
0425   0715 > Boarding and landing times of the flight.

在这里,我们需要从原始文本字段中提取单个数据元素,然后将它们映射到各自的旅行字段并计算多个值。

R / Python中是否有程序以最小的努力实现它们。

我正在寻找数据拆分/映射的subsist函数/过程。

1 个答案:

答案 0 :(得分:1)

如果您可以提取单个记录,如第二个示例所示,并且如果字段之间始终至少有一个空格,那么在Python中提取单个数据部分非常简单:

>>> itin = 'EY  275   13FEB HYDAUH 0425   0715'
>>> ifields = itin.split()
>>> ifields[0] # travel type
'EY'
>>> ifields[1] # flight number
'275'
>>> ifields[2] # date of travel
'13FEB'
>>> ifields[3][0:3] # departure airport
'HYD'
>>> ifields[3][3:6] # destination airport
'AUH'
>>> ifields[4] # boarding time
'0425'
>>> ifields[5] # landing time
'0715'

你的第一个例子显示第二个记录直接从第一个记录开始,没有空格 - 这是正确的吗?如果是这样,每条记录的长度总是相同的字符数吗?

>>> itinline = 'QR 529  09AUG MAADOH  0405  0600QR  67  09AUG DOHFRA  0815'
>>> itinline[0:32]
'QR 529  09AUG MAADOH  0405  0600'
>>> itinline[32:64]
'QR  67  09AUG DOHFRA  0815'

如果您的数据在一行中有多个可变长度记录,或者每个字段之间可能存在或不存在空格,则解析变得更加复杂,但在Python中仍然相当容易。在这种情况下,请发布一个包含多个记录的更完整示例,并显示您想要获得的输出。