【发布时间】:2017-05-20 06:42:12
【问题描述】:
我的问题实际上有两个部分。我编写了一个函数来通过简单的替换从字符串中删除 ANSI 代码,但是该函数按原样返回字符串。我尝试使用 pdb 进行调试,但结果没有意义,因为 Python 本身似乎存在故障。但是我对此表示怀疑,所以我试图找出我在代码中没有看到的错误。另外我想知道是否有更好的方法来删除(可能还没有看到)ANSI 代码,而无需每次都修改函数。
这是 pdb 屏幕的截图,让我感到困惑: pdb screenshot of function debugging
n_text 没有被设置,targets 被设置为奇怪的东西,执行行指针不知何故被设置为不可执行的行 (157)。 当我使用 re 而不是 string.replace 时,我遇到了类似的错误。
功能是
def clean_ansi(text, remove=''):
# remove ANSI control codes
n_text = text
targets = [''.join([chr(cde) for cde in [27, 91, 67]]),
''.join([chr(cde) for cde in [27, 91, 48, 109]]),
''.join([chr(cde) for cde in [27, 91, 49, 109]])]
for target in targets:
n_text = n_text.replace(target, '')
return n_text
对于这个例子,我要清理的字符串是
'?- 人类(苏格拉底)\n\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C \x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C.\n\x1b[1mtrue.\x1b[0m\n\n?-'
预期回报是
'?- 人类(苏格拉底)\n.\ntrue.\n\n?-'
把事情放在上下文中,这是项目to create a command-line IDE 的一部分,当查询被传递到 SWI-Prolog 实例(通过 pexpect)并且解析输出以仅给出实际结果时,会发生此特定问题,这是 true。 在这种情况下。
【问题讨论】:
标签: python swi-prolog pdb pexpect