pyparsing - Pyparsing:空格和行开始的交替
问题描述
使用 pyparsing,我想获得一个以空格开头或位于行首的标记列表。但我正在努力寻找空格和行开头,更不用说实际的标记:
from pyparsing import LineStart, MatchFirst, Regex, Or, White
WS = White(" ")
NL = LineStart()
# Same result with:
# NL = Regex("(?m)^")
data = """
Line one.
Line two.
"""
parser = MatchFirst((WS, NL))
# Same result with:
# parser = WS | NL (equivalent to MatchFirst)
# parser = Or((Ws, NL))
# parser = WS ^ NL (equivalent to Or)
result = parser.searchString(data)
print(f'{len(result)} matches.')
# 3 matches.
# Should be 5 matches.
parser = NL
result = parser.searchString(data)
print(f'{len(result)} matches.')
# 3 matches.
# Correct.
parser = WS
result = parser.searchString(data)
print(f'{len(result)} matches.')
# 2 matches.
# Correct.
该data
字符串有 2 个空格和 3 个行开头,如果我只使用WS
(whitespace) 或NL
(line start),解析器确实会找到正确的出现次数。
但是,当使用、 或的交替时Or
,只会找到行首,而不是两个空白字符。|
MatchFirst
我想知道我是否忽略了某些东西,或者空格匹配是否按预期工作。如果我查找文字而不是空格,则可以轻松找到文字和行开头。
解决方案
推荐阅读
- excel - 将数据合并到一张表中并创建源表的新列
- amazon-ecs - AWS ECS Fargate 日志记录:Firelens 侧车容器方法面临问题,将应用程序容器中存在的日志文件推送到 Cloudwatch
- python - 如何解决我的代码中的输出问题?
- python - 操作系统升级后 Python Selenium Chrome 未运行
- html - 使页脚位置粘在最后
- c# - EPPlus - 读取对象
- google-apps-script - 删除触发器自动删除了我的脚本项目
- webpack - 有没有一个插件可以通过webpack缩小微信小程序中的wxss和js/wxs?
- html - 设置网格列始终为 100%
- html - 文字不想在图像下方。使用引导程序