解析examp

2024-10-06 10:26:26 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次尝试使用pyparsing,我想问 如何筛选此采样线:

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

得到如下输出:1,52.125133215643,21.031048525561116.898812

一般来说,我在理解pyparsing逻辑方面有问题,所以有任何帮助 以身作则,不胜感激。谢谢


Tags: 逻辑pyparsingsurveygpspn1
1条回答
网友
1楼 · 发布于 2024-10-06 10:26:26

你可以这样开始:

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)

相关问题 更多 >