我不太清楚为什么会这样。我试图删除逗号之间的所有内容,但它似乎做了一些奇怪的事情。
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
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
通过添加以下内容解决了这个问题:
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
答案 1 :(得分:0)
你可能已经解决了,但你的问题基本上是
for log in re.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循环中执行此操作。