首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyparsing示例

pyparsing示例
EN

Stack Overflow用户
提问于 2011-12-15 00:09:12
回答 1查看 8.6K关注 0票数 10

这是我第一次尝试使用pyparsing,我想问一下如何过滤这个样本行:

代码语言:javascript
复制
survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812'''

输出如下: 1,52.125133215643,21.031048525561,116.898812

一般来说,我在理解pyparsing逻辑方面有问题,所以对这个例子的任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-15 00:24:37

您可以从如下内容开始:

代码语言:javascript
复制
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)

该脚本的输出为:

代码语言:javascript
复制
[52.125133215643, 21.031048525561, 116.898812]

编辑:您可能还想考虑lepl,这是一个文档非常好的类似库。与上面的脚本等效的脚本是:

代码语言:javascript
复制
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)
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8507694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档