2017-09-01 47 views
0

我接受一組循環中的input()函數,直到它遇到EndofInput並將其存儲在文本字符串中。現在這個輸入是一個文本塊。如何在不將此文本寫入文件的情況下處理這些文本數據?我需要根據這個輸入數據做一些操作。我如何迭代?遍歷一個文本塊而不將它寫入python文件中

課程
POT〜藥水〜1〜2011-2012〜西弗勒斯·斯內普
DADA〜的黑魔法防禦ARTS〜1〜2011-2012〜羅克哈特
學生
RAV4309〜安吉麗娜·約翰遜
HUF7201〜Gwenog瓊斯
GRF9110〜帕瓦蒂蒂爾
RAV4308〜橄欖霍恩比
等級
POT〜1〜2011-2012〜RAV4308〜ç
POT〜1〜2011-2012〜RAV4309一B
POT〜1〜2011-2012〜GRF9110〜一個
EndOfInput

lines = [] 
line="String" 
while line != "EndOfInput": 
     line = input(); 
     lines.append(line) 


text = '\n'.join(lines) 
print(text) 
+1

你可以顯示你所指的代碼,你在哪裏用'input()'讀取輸入? – CoryKramer

+1

你的問題表明你知道如何遍歷它*與*寫入文件;你不能只使用它並註釋掉寫入? –

+0

@ScottHunter我沒有把它寫到一個文件,你可以看到。寫入文件是不允許的。相反,我只是在輸入後在Python解釋器上打印它 –

回答

0

如果你把所有的輸入到一個字符串可變的,但要在每行工作,你讀過所有的輸入後個人,先來看看在.split method on strings

例如,如果你完整的字符串存儲在變量input,你可以做類似

for line in input.split("\n"): 
#do something with that line 
+0

或者只是使用已有的行數組。 –

+0

是的,OP在我提交此評論後立即編輯。 (只需使用'lines'而不是'input.split(「\ n」)') – thecoloryes

-1

也許是這樣的:

inputText = input() 
doStuff = True 
for l in inputText.split("\n"): 
    if l.find('EndOfInput') > -1: 
     doStuff = False 
    if doStuff: 
     #do what you want with the line 
+0

這不太合適,因爲問題中的代碼不會將「EndOfInput」添加到inputText中。 –

+0

在提供的「EndOfInput」已經是最後一行的字符串@k_roy的列表中。此外,問題的表達方式是迭代直到遇到「EndOfInput」行。 –

+0

我想我們對這個問題有不同的解釋。對我來說,看起來OP已經有一次一行讀取數據的代碼,現在需要在所有輸入完成後迭代數據。問題中的代碼顯示了一個數組,當它是'EndOfInput'時,將在所有輸入_except_中填充數組。 –

0

您正在創建行的列表。只需遍歷列表而不將其轉換爲字符串。

while line != "EndOfInput": 
    line = input(); 
    lines.append(line) 

# you now have a list of lines, which you can easily iterate over 
for line in lines: 
    print("line:", line) 
+0

,幫助..謝謝! @bryan oakley –

相關問題