如果找到某个子字符串,则删除两个字符之间的文本(python)

如果找到某个子字符串,则删除两个字符之间的文本(python),python,for-loop,substring,Python,For Loop,Substring,我不太清楚为什么会发生这种情况。我试图删除逗号之间的所有内容,但它似乎做了一些奇怪的事情 import re jsontext = '123,0test123,456,4test567,789' for log in re.finditer('test', jsontext): print jsontext logstart = jsontext.rfind(",",0,log.start()) logend = jsontext.find(",",log.start()

我不太清楚为什么会发生这种情况。我试图删除逗号之间的所有内容,但它似乎做了一些奇怪的事情

import re
jsontext = '123,0test123,456,4test567,789'
for log in re.finditer('test', jsontext):
    print jsontext
    logstart = jsontext.rfind(",",0,log.start())
    logend = jsontext.find(",",log.start())
    jsontext = jsontext[:logstart] + jsontext[logend+1:]
    print logstart
    print logend
    print '\n'
    print jsontext
    print '\n---end---\n'
它正在生产

123,0test123,456,4test567,789
3
12


123456,4test567,789

---end---

123456,4test567,789
15
-1


123456,4test567123456,4test567,789

---end---
剩下的是

123456,4test567123456,4test567,789
但我期待着最终的结果

123456789

为什么会发生这种情况?我如何解决它?

通过添加以下内容解决了此问题:

import re
x = 0
jsontext = '123,0test123,456,4test567,789'
while x == 0:
    log = jsontext.find('test')
    if log <> -1:
        logstart = jsontext.rfind(",",0,log)
                logend = jsontext.find(",",log)
        jsontext = jsontext[:logstart] + jsontext[logend+10:]
    else:
        x = 1
print jsontext
重新导入
x=0
jsontext='123,0test123456,4test567789'
当x==0时:
log=jsontext.find('test')
如果日志为-1:
logstart=jsontext.rfind(“,”,0,log)
logend=jsontext.find(“,”,log)
jsontext=jsontext[:logstart]+jsontext[logend+10:]
其他:
x=1
打印jsontext

您可能已经修复了它,但您的问题基本上是

用于登录关于finditer('test',jsontext)

继续使用原始jsontext,而不是jsontext的新值

您可以使用以下实现来证明这一点:

import re
jsontext = '123,0test123,456,4test567,789'
for log in re.finditer('test', jsontext):
    log = re.finditer('test',jsontext).next()
    print jsontext
    print log.start()
    logstart = jsontext.rfind(",",0,log.start())
    logend = jsontext.find(",",log.start())
    jsontext = jsontext[:logstart] + jsontext[logend+1:]
    print logstart
    print logend
    print '\n'
    print jsontext
    print '\n---end---\n'

您需要在while循环中执行此操作,而不是在for循环中。

啊,我明白了。通过调整jsontext变量,我尝试了一些方法,但是我无法让它更改re.finditer()中的变量。我不知道re.finditer().next()。谢谢!这似乎仍然不起作用。我知道我们正在尝试更新
log
变量,但我无法让它工作。将其放在放置位置会产生一个错误:
Traceback(最后一次调用):文件“removelogs.py”,第5行,在log=re.finditer(“'EventName:“log”,',jsontext)中。next()StopIteration
。然后我试着把它放在后面,但是文件还是不正确。