2013-06-22 146 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

抱歉,在我第一次閱讀它時沒有看到您的所有代碼。我會再試一次:-) –