如果找到某个子字符串,则删除两个字符之间的文本(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
。然后我试着把它放在后面,但是文件还是不正确。