首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyParsing忽略换行符?

PyParsing忽略换行符?
EN

Stack Overflow用户
提问于 2015-06-10 17:35:02
回答 1查看 521关注 0票数 1

我想解析如下所示的git日志文件:

代码语言:javascript
运行
复制
d2436fa AuthorName 2015-05-15 Commit Message
4    3    README.md

我期望的输出如下所示:

代码语言:javascript
运行
复制
[ ['d2436fa', 'AuthorName', '2015-05-15', 'Commit Message'],
[4, 3, 'README.md'] ]

我解析这个的语法是:

代码语言:javascript
运行
复制
hsh = Word(alphanums, exact=7)
author = OneOrMore(Word(alphas + alphas8bit + '.'))
date = Regex('\d{4}-\d{2}-\d{2}')
message = OneOrMore(Word(printables + alphas8bit))
count = Word(nums)
file = Word(printables)
blankline = LineStart() + LineEnd()

commit = hsh + Combine(author, joinString=' ', adjacent=False) + \
         date + Combine(message, joinString=' ', adjacent=False) + LineEnd()
changes = count + count + file + LineEnd()
check = commit ^ changes ^ blankline

我实际得到的输出是:

代码语言:javascript
运行
复制
['d2436fa', 'AuthorName', '2015-05-15', 'Commit Message 4 3 README.md']

为什么新行被忽略了?我认为这就是LineEnd()的目的吗?当我为'\n‘分手时,一切都很好:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-10 17:54:17

pyparsing在语法中有一个关于空格的(有争议的?) 规则

在匹配过程中,默认情况下跳过令牌之间的空格(尽管可以更改)。

而且,正如它所说的,它是可以改变的。您可以通过执行以下操作来设置pp认为是空白的内容:

代码语言:javascript
运行
复制
i_consider_whitespaces_to_be_only = ' '
ParserElement.setDefaultWhitespaceChars(i_consider_whitespaces_to_be_only)

(这将告诉它只使用空格,而不是换行符;当然,您还可以添加其他内容,例如制表符。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30763451

复制
相关文章

相似问题

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