Python字符串打印格式

时间:2013-06-22 14:26:05

标签: python string printing formatting

我是编程和编程的新手。蟒蛇。目前仍在制作我的第一个节目。一周前我在这个论坛上得到了一些帮助,但是现在我被困在了程序的另一部分,所以我需要一些帮助我再次出来: - )

在这个例子中,我有2个文件keyfile.dat,其中包含整个ascii字符集,每行一个字符。它们是实际的字符,而不是代码。

test.txt的工作方式类似于索引文件。每行包含一个数字,该数字指向keyfile.dat内的行号,而该行号又包含一个ascii字符。下面的代码打印字母,逗号,问号等字母。但是它不打印空格,回车等等。我想这是因为我在str.strip语句中使用print。如果我不使用该命令,而不是在同一行上打印每个字符,除非它读取回车符,它会在单独的行上打印每个字符。基本上,程序的这一部分应该打印它所指向的任何字符,无论它是什么,并按原样打印,就像打字一样。

--- --- EDIT 代码已删除

有什么想法吗? &安培;提前感谢任何回复。克林顿。

keyfile.dat的示例内容

8
e
�
�
T
�
�
�
U
^V
�
^]
b
�
�
�
�
�
F

content test.txt:

14
203
163
38
52
163
38
188
231
11
38
231
242
208
74
163
38
163
231

使用上面的代码输出:

T h i s , i s a t e s t ! O r i s i t ?

因为你可以看到单词之间没有打印空格,之后!应该有一个回车。

我个人认为这是因为我的印刷声明。我需要使用.strip,否则从keyfile.dat读取的每个字符都会打印在一个新行上。 .strip到我的知识删除空格,回车等。所以,如果我读了一个回车&然后尝试打印它,它被剥离,因为我的打印starement使用.strip。

1 个答案:

答案 0 :(得分:2)

使用with语句处理文件,因为它会自动为您关闭文件:

with open('keyfile.dat') as f, open('test.txt') as i:
    index = [int(line) for line in i)          #apply int() here
    keyfile = f.readlines()
    for ind in index:
        line = keyfile[ind]
        if len(line) > 1:
            print line[:-1],
        elif len(line) == 1:
            print line,