2013-06-04 110 views
0

我有一個純文本文件,我試圖使用文本文件重新創建「打印爲已寫入」功能。從純文本文件中讀取和打印Python 3

的文本文件,目前有:

""" 
Test1 

Test1 

Test1 
""", 
""" 
Test2 

Test2 

Test2 
""", 
""" 
Test3 

Test4 

Test5 
""" 

而且我的目標是讀入3個字符串列表此,有隨機模塊選擇這些字符串中的一個,並最終打印出來完全按照書面但不。在「」」或者,我可以從文件中刪除這些字符,如果需要的話,我只是猜測如何讓打印打印正是上寫的,因爲它將:

print(""" 
Test1 

Test1 

Test1 
""") 

(輸出)

Test1 

Test1 

Test1 

任何幫助將不勝感激。謝謝!

編輯:我曾嘗試:

import random 
file = open('prebaked', 'r') 
print(random.choice(file)) 

import random 
with open('prebaked', 'r') as f: 
    file = f.read() 
print(random.choice(file)) 

import random 
with open('prebaked', 'r') as f: 
    file = list(f.read()) 
print(random.choice(file)) 
+1

你嘗試過這麼遠嗎?我們不是在這裏爲您編寫代碼 - 我們在這裏爲您解決具體問題。 – thegrinner

+0

導入隨機 文件=打開( '預烘焙', 'R') 打印(random.choice(文件)) 和 隨機進口與 開放( '預烘焙', 'R')爲f: \t文件= f.read() 打印(random.choice(文件)) 和 進口隨機 開放( '預焙', 'R')爲f: \t文件=名單(f.read() ) print(random.choice(file)) – Simkill

回答

3

邏輯:

  • 讀取文件。
  • 根據','將字符串分成列表,並從字符串中刪除空格和"""
  • 隨機呼叫從列表中選擇。

代碼:

import random 

with open('mytextfile.txt', 'r') as file_obj: 
    str_list = [s.strip('\r\n\t "') for s in file_obj.read().split(',')] 

print random.choice(str_list) 
+2

'strip('「」'')'和strip('「')'相同,並刪除任意數量的前導/尾隨引號。 – interjay

+0

+1不錯的提示,謝謝,我解決了! –

+1

謝謝你,這個答案是最容易讓我周圍,我可以得到它的工作。謝謝! – Simkill

2

什麼文件包含幾乎完全爲字符串列表的Python語法,它的只是缺少[]。如果你添加這些,你可以使用ast.literal_eval安全評估Python語法,給你字符串列表:

>>> from ast import literal_eval 
>>> with open('myfile.txt', 'r') as f: 
     file_contents = f.read() 
>>> literal_eval('[' + file_contents + ']') 
['\nTest1\n\nTest1\n\nTest1\n', '\nTest2\n\nTest2\n\nTest2\n', '\nTest3\n\nTest4\n\nTest5\n'] 
+0

我不明白該代碼如何知道哪些文件名或列表讀入file_contents。 – Simkill

+0

@Simkill:我假設你將文件內容讀入字符串'file_contents',例如'file_contents = my_file.read()'。 – interjay

+0

對不起,我應該說我最好在文件I/O方面很朦朧,因爲我在業餘時間嘗試自學Python。不過謝謝你的幫助,我會牢記未來的這個模塊。 – Simkill