1

我对编程和 Python 很陌生。目前仍在开发我的第一个程序。大约一周前,我从这个论坛得到了一点帮助,但现在我被困在程序的另一部分,所以我需要某种鞋底来再次帮助我:-)

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

test.txt像索引文件一样工作。每行包含一个数字,该数字指向一个行号,keyfile.dat其中又包含一个 ascii 字符。下面的代码打印字母、逗号、问号等。但是它不打印空格、回车等。我想这是因为我str.stripprint语句中使用。如果我不使用该命令,除非读取回车符,否则不会在同一行打印每个字符,而是将每个字符打印在单独的行上。基本上,程序的这一部分应该打印它指向的任何字符,不管它是什么,并完全按原样打印,就像它正在被键入一样。

---编辑---代码已删除

有任何想法吗?& 提前感谢您的任何回复。克林顿。

keyfile.dat 的示例内容

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

内容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 删除了空格、回车符等。因此,如果我读取回车符然后尝试打印它,它会被删除,因为我的打印程序使用了 .strip。

4

1 回答 1

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,
于 2013-06-22T14:30:06.333 回答