2011-12-14 46 views
8

这是我第一次使用pyparsing尝试,我想问问 如何过滤此示例行:pyparsing例如

survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812''' 

获得输出,如:1,52.125133215643,21.031048525561,116.898812

一般来说,我在理解pyparsing逻辑时遇到问题,所以对这个 例子的帮助将不胜感激。由于

回答

19

你可以像这样的东西开始:

from pyparsing import * 

survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812''' 

number = Word(nums+'.').setParseAction(lambda t: float(t[0])) 
separator = Suppress(',') 
latitude = Suppress('LA') + number 
longitude = Suppress('LN') + number 
elevation = Suppress('EL') + number 

line = (Suppress('GPS,PN1,') 
     + latitude 
     + separator 
     + longitude 
     + separator 
     + elevation) 

print line.parseString(survey) 

脚本的输出是:

[52.125133215643, 21.031048525561, 116.898812] 

编辑:您可能还需要考虑lepl,这是一个类似的库那很好地记录。与上面相同的脚本是:

from lepl import * 

survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812''' 

number = Real() >> float 

with Separator(~Literal(',')): 
    latitude = ~Literal('LA') + number 
    longitude = ~Literal('LN') + number 
    elevation = ~Literal('EL') + number 

    line = (~Literal('GPS') 
      & ~Literal('PN1') 
      & latitude 
      & longitude 
      & elevation) 

print line.parse(survey) 
+0

非常感谢您的帮助! – daikini 2011-12-14 16:36:35