regex 使用命令和2个可选参数将句子拆分为较小的短语[已关闭]

pb3s4cty  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(77)

已关闭。此问题需要更多focused。它目前不接受回答。
**希望改进此问题?**更新问题,使其仅针对editing this post的一个问题。

5天前关闭。
Improve this question

  • 首先用命令列表中的单词将句子拆分成更小的短语
  • 单词可以出现在句子的任何地方
  • 在单词之后可以有另一个单词和一个数字(两者都是可选的)
  • 删除不在任何列表中的任何单词。

小例子:

txt = "dash dash forward dash backward 5 5 walk walk forward walk forward 5 a"
commands = ['dash', 'walk']
directions = ['forward', 'backward']

字符串
应该把一个句子分成更小的短语:

dash
dash forward
dash backward 5
--> cut out 5
walk
walk forward
walk forward 5
--> cut out a

pvcm50d1

pvcm50d11#

一个丑陋的解决方案,但它有效:

txt = "dash dash forward dash backward 5 5 walk walk forward walk forward 5 a"
commands =['dash','walk']
directions= ['forward','backward']
words = txt.split(" ")
i = 0
res = []
while i < len(words):
    if words[i] not in commands:
        print(f"cuts off {words[i]}")
        i += 1
        continue
    tmp = [words[i]]
    if i + 1 < len(words) and words[i+1] in directions:
        tmp.append(words[i+1])
        if i + 2 < len(words) and words[i+2] not in commands:
            tmp.append(words[i+2])
    i = i + len(tmp)
    res.append(" ".join(tmp))
print(res)

字符串
产出

cuts off 5
cuts off a
['dash', 'dash forward', 'dash backward 5', 'walk', 'walk forward', 'walk forward 5']

相关问题