Python标准输出显示emacs中的隐藏字符

时间:2015-04-18 07:53:12

标签: python bash emacs

我编写了一个生成list个单词的python函数。首先,它读取由新行分隔的单词组成的文件。它根据单词将其插入list或插入一​​个空格,由制表符表示。这是代码的相关部分:

xclusives1xclusives2dups,是list s。

generator是包含该函数的类的实例。

def xfile1(self):
        for item1 in self.lines1:
            for item2 in self.lines2:
                if item1 == item2:
                    self.xclusives1.append("\t")
                    self.xclusives2.append("\t")
                    self.dups.append(item1)
                    break
            self.xclusives1.append(item1)
            self.xclusives2.append("\t")
            self.dups.append("\t")
            ...
            ...
            ...
            ...
            print generator.xclusives2

如您所见,我在list附加了文件中的标签和项目。我希望输出转到文件,所以在命令行上,我做:

comm.py是程序名称,testtest2是测试输入。

$python comm.py test test2 >commOut

在emacs中打开输出文件让我看起来像这样:

'\ t','\ t','\ t','aword \ n','anotherword \ n',...

每个list项都被单引号括起来,并且所有隐藏的字符都显示在emacs上,即使在函数获取单词的原始列表中,新行也被隐藏

如何制作新线和标签以显示正确的隐藏字符?

1 个答案:

答案 0 :(得分:3)

这是因为当您打印列表时,它会打印所有项目的 repr 。这样你就不会混淆列表[1, '1']['1', 1](其中1是一个int而'1'是一个str)

要解决此问题,如果所有项目都是字符串,请按', '

打印它们
print ', '.join(generator.xclusives2)

或者,如果你想在字符串周围加上引号,

print "'" + "', '".join(generator.xclusives2) + "'"

请注意str(string) == string。 (str('Hello world!') == 'Hello world!')和repr(string) != stringrepr('Hello world!') == "'Hello world!'"