我编写了一个生成list
个单词的python函数。首先,它读取由新行分隔的单词组成的文件。它根据单词将其插入list
或插入一个空格,由制表符表示。这是代码的相关部分:
xclusives1
,xclusives2
,dups
,是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
是程序名称,test
,test2
是测试输入。
$python comm.py test test2 >commOut
在emacs中打开输出文件让我看起来像这样:
'\ t','\ t','\ t','aword \ n','anotherword \ n',...
每个list
项都被单引号括起来,并且所有隐藏的字符都显示在emacs上,即使在函数获取单词的原始列表中,新行也被隐藏
如何制作新线和标签以显示正确的隐藏字符?
答案 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) != string
(repr('Hello world!') == "'Hello world!'"
)