python - 如何抑制python中的错误消息?

标签 python error-handling iterator

所以我试图做一个程序,从给定的字符串中删除所有重复的字母。该代码基本上是一个自制的迭代器,是我从另一篇文章中获得的:How do I reset a list iterator in Python?

string = "NNEEXXxxTTGGEENNCCOODDEERR"

class rmvDuplicates:

def __init__(self, list, newString):
    self.newString = newString
    self.list = list
    self.idx = 0
    self.content = list[self.idx]

def __iter__(self):
    return self

def get_content(self, content):
    return content

def get_index(self):
    return self.idx

def get_content_next(self, content):
    try:
        self.idx += 1
        return self.content
    finally:
        self.idx -= 1

def remove(self, elem):
    del self.list[self.idx]
    return

def rewind(self):
    self.idx = 0

def __next__(self):
    try:
        return self.list[self.idx]
    except IndexError:
        pass
    finally:
        self.idx += 1
        self.content = self.list[self.idx]  

new_String = []

li = rmvDuplicates(list(string), new_String)

for elem in li:
    if li.get_content(elem) == li.get_content_next(elem):
        print(li.get_content(elem))
        li.remove(elem)
        print(li.list)

print("Hello")

注意:print("Hello")仅用于测试目的

我对其进行了一些修改以满足自己的需要,并且效果很好,直到到达IndexError为止。
def __next__(self):
    try:
        return self.list[self.idx]
    except IndexError:
        pass
    finally:
        self.idx += 1
        self.content = self.list[self.idx]

我已经尝试使用带有pass方法的Except-Block来解决这个问题。

但是,程序仍然显示此消息:
Traceback (most recent call last):
  File "rmv_dplc_cls.py", line 49, in <module>
    for elem in li:
  File "rmv_dplc_cls.py", line 42, in __next__
    self.content = self.list[self.idx]
IndexError: list index out of range

这里是否有人知道如何解决此问题,因此程序可以继续运行并且不会中止。

谢谢

最佳答案

尝试将__next__方法更改为:

def __next__(self): 
    try: 
        value = self.list[self.idx]
        self.idx += 1
    except IndexError:
        self.idx = 0
        value = self.list[self.idx]
    finally:
        return value

说明:

如果您的try子句失败,则意味着self.list[self.idx]访问列表范围之外的元素,从而提高IndexError。在这种情况下,尝试访问相同的self.list[self.idx]将导致这次在try子句之外生成另一个IndexError

关于python - 如何抑制python中的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201933/

相关文章:

iterator - Rust 实现合并排序迭代器

python - csv.DictReader 中的行数

c++ - 如何使用 C++ Boost 的 regex_iterator()

python 3 : `else` statement get executed even `if` statement was true

php - 更正PHP中的编程错误

asp.net - Application_Error被忽略?

php - 子类中的构造函数将覆盖父类中的构造函数。因此父构造函数不会运行。 OpenCart

python - jinja2 模板的多个渲染?

python numpy - 有更快的卷积方法吗?

python - 如何像 Mac OS 的 gunzip 一样解压从 Python3 中的 SFTP 中提取的 GZIP 文件?