python - 删除字符串的前 X 个单词和分隔符 - 具有多个分隔符

标签 python regex string split

我有一个字符串,例如 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

如何才能保留未删除词的原始分隔符?

为了让它更有趣,输入字符串可以在单词之间包含多个空格或制表符;只有一个逗号,但在它之前/之后也可能有空格:

操纵 ,widgets add , 1, 2 , 3

请注意,不能保证单词是唯一的,所以我不能在要删除的单词之后获取单词的索引并使用它来返回位置子字符串。


[更新] 我接受了 'Kasramvd 解决方案,但后来发现它没有正确处理 remover('LET FOUR = 2 + 2', 2)remover('A -1 B text.txt', 2),所以现在我提供赏金。


[Update++] 分隔符是空格、制表符和逗号。其他所有内容(包括等号、减号等)都​​是单词的一部分(尽管如果回答者能告诉我将来如何在必要时添加新的定界符,我会很高兴)

最佳答案

你可以像这样定义一个正则表达式

>>> import re
>>> regEx = re.compile(r'(\s*,?\s*)')

这意味着,一个可选的逗号后跟或前面有零个或多个空白字符。括号是为了创建一个匹配组,它会在拆分过程中保留分隔符。

现在根据RegEx进行拆分,然后跳过你不想要的实际元素个数,以及这些元素对应的分隔符个数(比如你要跳过三个元素,那么就会有两个三个元素之间的分隔符。因此您可能希望从拆分数据中删除前五个元素)并最终加入它们。

例如,

>>> def splitter(data, count):
...     return "".join(re.split(regEx, data)[count + (count - 1):])
... 
>>> splitter("manipulate,widgets,add,1,2,3", 2)
',add,1,2,3'
>>> splitter("manipulate widgets add,1,2,3", 3)
',1,2,3'

关于python - 删除字符串的前 X 个单词和分隔符 - 具有多个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890223/

相关文章:

python - 用正则表达式抓取带有可选 <spans> 的 <p>

sql - 批量更新 Excel 文件连接字符串

java - 在java中将日期从字符串转换为oracle.jbo.domain.Date

regex - PowerShell 字符串匹配和管道字符

python - 将 bash 变量传递给脚本?

python - 如何将 pygame 表面转换为 PIL 图像?

python - 使用NLTK的编码问题

python - 使用 pandas Python (pandas.io.parsers.TextFileReader) 从文件读取数据时出现问题

javascript - 格式化电话号码

正则表达式空字符串或电子邮件