【发布时间】:2016-06-23 17:55:45
【问题描述】:
我有一个字符串,例如manipulate widgets add,1,2,3(抱歉,我无法更改格式)。
我想删除前 X 个单词以及所有之前它们的分隔符。
我们以3为例,从而删除manipulate widgets add,留下,1,2,3
或者,把manipulate,widgets,add,1,2,3删掉两个字(manipulate,widgets),留下,add,1,2,3
我可以用words = re.split('[' + delimiters + ']',inputString.strip())将字符串拆分成一个列表,但我不能简单地删除第X个单词
比如说,
for i in range(1, numWorsdToRemove):
del words[0]
然后是return ' '.join(words),因为这给了我1 2 3 4。
我怎样才能做到并保留未删除单词的原始分隔符?
为了有趣,输入字符串可以在单词之间包含多个空格或制表符;只有一个逗号,但在它之前/之后也可能有空格:
manipulate ,widgets add , 1, 2 , 3
请注意,单词不能保证是唯一的,因此我不能在要删除的单词之后获取单词的索引并使用它来返回位置子字符串。
[更新] 我接受了 'Kasramvd 解决方案,但后来发现它没有正确处理 remover('LET FOUR = 2 + 2', 2) 或 remover('A -1 B text.txt', 2),所以现在我提供赏金。
[Update++] 分隔符是空格、制表符和逗号。其他所有内容(包括等号、减号等)都是单词的一部分(尽管如果有必要,如果回答者告诉我将来如何添加新的分隔符,我会很高兴)
【问题讨论】:
-
你认为分隔符是什么,你认为单词是什么?
-
分隔符是空格和制表符。其他所有内容都是单词的一部分(尽管如果有必要的话,如果回答者告诉我将来如何添加新的分隔符,我会很高兴)
-
在第二种情况下,您仍然将逗号视为分隔符:
manipulate,widgets,add,1,2,3-->,add,1,2,3。第一个和第二个逗号被视为分隔符。 -
你是对的 (+1)。重新考虑时,逗号 应该 被视为分隔符。感谢您指出了这一点;我已经更新了问题。