2013-06-22 148 views
1

我很新编程& Python。目前仍在开展我的第一个项目。我在一周前从这个论坛上得到了一些帮助,但是现在我被卡在了程序的另一部分,所以我需要一些独家帮助我再次出来:-)Python字符串打印格式化

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

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

---编辑--- 代码中删除

任何想法? &在此先感谢您的回复。克林顿。 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去我的知识删除空格,回车等。因此,如果我读回车&然后尝试打印它,它会被剥离,因为我的打印staryment使用.strip。

+0

你最好使用with语句:'开放的( 'keyfile.dat')为f:开放('test.txt')作为我:'而不是'open' /'close'。 – zmo

回答

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, 
+0

嗨Ashwini,只打印每行1个字符,仍然排除空格,回车等。谢谢你的答复,但!克林顿。 –

+0

@ user2490853请将问题主体中的'keyfile'和'test'文件发布出去。 –

+0

抱歉,在我第一次阅读它时没有看到您的所有代码。我会再试一次:-) –