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