2017-09-01 48 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 –

相关问题