Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中迭代文本块而不将其写入文件_Python_Python 3.x - Fatal编程技术网

在python中迭代文本块而不将其写入文件

在python中迭代文本块而不将其写入文件,python,python-3.x,Python,Python 3.x,我通过循环中的输入函数接受一组行,直到它遇到EndofInput并将其存储在文本字符串中。现在这个输入是一个文本块。如何处理这些文本数据而不将其写入文件?我需要根据这个输入数据做一些操作。如何迭代 课程 大麻~药水~1~2011-2012~西弗勒斯·斯内普 达达~黑魔法防御~1~2011-2012~吉尔德罗·洛克哈特 学生 RAV4309~安吉丽娜·约翰逊 HUF7201~Gwenog Jones GRF9110~帕瓦蒂帕蒂尔酒店 RAV4308~奥利弗·霍恩比 分数 罐1~2011-2012~

我通过循环中的输入函数接受一组行,直到它遇到EndofInput并将其存储在文本字符串中。现在这个输入是一个文本块。如何处理这些文本数据而不将其写入文件?我需要根据这个输入数据做一些操作。如何迭代

课程 大麻~药水~1~2011-2012~西弗勒斯·斯内普 达达~黑魔法防御~1~2011-2012~吉尔德罗·洛克哈特 学生 RAV4309~安吉丽娜·约翰逊 HUF7201~Gwenog Jones GRF9110~帕瓦蒂帕蒂尔酒店 RAV4308~奥利弗·霍恩比 分数 罐1~2011-2012~RAV4308~C 罐1~2011-2012~RAV4309~B 罐1~2011-2012~GRF9110~A 内finput


如果要将所有输入放在单个字符串变量中,但要在读取所有输入后分别处理每一行,请查看

例如,如果完整的字符串存储在变量输入中,则可以执行以下操作

for line in input.split("\n"):
 #do something with that line
可能是这样的:

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

您正在创建一个行列表。只需在列表上迭代,而无需将其转换为字符串

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)

你能展示你所指的代码吗?你在哪里使用input读取输入?你的问题表明你知道如何通过将其写入文件来迭代它;你就不能用它注释掉写的内容吗?@ScottHunter我没有像你看到的那样把它写到文件中。不允许写入文件。取而代之的是,我在python解释器上打印它,在获取输入后,您有一个行列表,为什么不迭代它,而不是将其转换为字符串?你可以用任何一种方法,但是如果你已经有了一个列表,那么你也可以使用它。这不会很有效,因为问题中的代码没有将EndOfInput添加到inputText。在字符串列表中@k_roy提供的EndOfInput已经是最后一行了。此外,问题的措词方式目标是迭代行,直到遇到行EndOfInput。我想我们对这个问题有不同的解释。在我看来,OP已经有了一次读取一行数据的代码,现在需要在所有输入完成后对数据进行迭代。问题中的代码显示了一个数组在所有输入中被填充,但EndOfInput除外。是的,OP在我提交此评论后的几分钟内编辑了它。只需使用行而不是输入。拆分\n这很有帮助..谢谢@布莱恩·奥克利
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)