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

时间:2016-04-07 19:52:43

标签: 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())
    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

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

2 个答案:

答案 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循环中执行此操作。