pyparsing:匹配同一行的单词
pyparsing: match words on same line
在 pyparsing 中,我正在寻找一种简单的方法来匹配出现在同一行上的单词(或其他表达式),即它们之间没有任何换行符。
您可以覆盖特定解析器元素的默认空白跳过字符 - 在这种情况下,word_on_the_same_line
仅跳过空格,但不跳过换行符。
import pyparsing as pp
word = pp.Word(pp.alphas, pp.alphanums)
# define special whitespace skipping, so that newlines aren't
# skipped when matching a word_on_the_same_line
word_on_the_same_line = word().setWhitespaceChars(" ")
# compare results with this version of word_on_the_same_line to see
# how pyparsing treats newlines as skippable whitespace
# word_on_the_same_line = word()
line = pp.Group(word("key") + word_on_the_same_line[...]("values"))
test = """\
key1 lsdkjf lskdjf lskjdf sldkjf
key2 sdlkjf lskdj lkjss lsdj
"""
print(line[...].parseString(test).dump())
打印:
[['key1', 'lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf'], ['key2', 'sdlkjf', 'lskdj', 'lkjss', 'lsdj']]
[0]:
['key1', 'lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf']
- key: 'key1'
- values: ['lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf']
[1]:
['key2', 'sdlkjf', 'lskdj', 'lkjss', 'lsdj']
- key: 'key2'
- values: ['sdlkjf', 'lskdj', 'lkjss', 'lsdj']
在 pyparsing 中,我正在寻找一种简单的方法来匹配出现在同一行上的单词(或其他表达式),即它们之间没有任何换行符。
您可以覆盖特定解析器元素的默认空白跳过字符 - 在这种情况下,word_on_the_same_line
仅跳过空格,但不跳过换行符。
import pyparsing as pp
word = pp.Word(pp.alphas, pp.alphanums)
# define special whitespace skipping, so that newlines aren't
# skipped when matching a word_on_the_same_line
word_on_the_same_line = word().setWhitespaceChars(" ")
# compare results with this version of word_on_the_same_line to see
# how pyparsing treats newlines as skippable whitespace
# word_on_the_same_line = word()
line = pp.Group(word("key") + word_on_the_same_line[...]("values"))
test = """\
key1 lsdkjf lskdjf lskjdf sldkjf
key2 sdlkjf lskdj lkjss lsdj
"""
print(line[...].parseString(test).dump())
打印:
[['key1', 'lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf'], ['key2', 'sdlkjf', 'lskdj', 'lkjss', 'lsdj']]
[0]:
['key1', 'lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf']
- key: 'key1'
- values: ['lsdkjf', 'lskdjf', 'lskjdf', 'sldkjf']
[1]:
['key2', 'sdlkjf', 'lskdj', 'lkjss', 'lsdj']
- key: 'key2'
- values: ['sdlkjf', 'lskdj', 'lkjss', 'lsdj']