Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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_Itertools_Sys_Txt - Fatal编程技术网

在Python中,如何在一个空格后读取到下一个空格

在Python中,如何在一个空格后读取到下一个空格,python,itertools,sys,txt,Python,Itertools,Sys,Txt,我有这个计划: 导入系统 进口itertools 从itertools导入islice fileLocation=input(“输入记分板的文件位置:”) input1=打开(文件位置,“rt”) 阿蒙托弗林斯=0 对于打开的行('input1.txt')。readlines(): 阿蒙托弗林斯+=1 时间戳=[line.split(“”,1)[0][0:]用于islice中的行(input1,2,amountofline)] TeamID=[line.split(“”,1)[0][0:]用于i

我有这个计划:

导入系统 进口itertools 从itertools导入islice fileLocation=input(“输入记分板的文件位置:”) input1=打开(文件位置,“rt”) 阿蒙托弗林斯=0 对于打开的行('input1.txt')。readlines(): 阿蒙托弗林斯+=1 时间戳=[line.split(“”,1)[0][0:]用于islice中的行(input1,2,amountofline)] TeamID=[line.split(“”,1)[0][0:]用于islice中的行(input1,2,amountofline)] 打印(团队ID) 以及此文本文件:

1
5 6
1 5 1 5 0
1 4 1 4 1
2 1 2 1 1
2 2 3 1 1
3 5 2 1 1
4 4 5 4 1

对于TeamID,我希望它在第一个空格后开始阅读,并从第二行开始阅读,我已经做到了,但不知道如何在第一个空格后阅读到下一个空格。对于时间戳,我已经管理了它,但只从第一个字符开始到第一个空格,不知道如何对TeamID执行此操作。非常感谢您的帮助

这里有一个建议,展示了
zip
转换阵列的一个很好的用例:

lines = open(fileLocation, 'r').readlines()[2:]
array = [[int(x) for x in line.split()] for line in lines]
transpose = list(zip(*filter(None, array)))

# now we can do this:
timestamps = transpose[0]  # (1, 1, 2, 2, 3, 4)
teamids = transpose[1]     # (5, 4, 1, 2, 5, 4)
这利用了
zip(*some\u list)
返回
some\u list
的转置这一事实


请注意,您得到的列数将等于最短行的长度。这就是为什么我加入了对
filter
的调用,以删除由空行引起的空行。

您能更详细地描述一下输入格式吗?在阅读时解析每一行可能要容易得多,而不是试图将整个文件读入内存并执行。。。不管你在做什么。这是一个记分牌,我有不同的输入文件,我想让代码按照我指定的方式工作,有些文件很长。在文本文件中,TeamID位于从5、4、1开始的第一个空格之后的第二列。。。我只想得到那些数字并保存到一个列表中,比如我是如何用时间戳而不是反复遍历整个文件内容,考虑从一行中提取所有的值,然后将每个值附加到适当的列表。(虽然与原问题无关)您可以使用file object作为行的迭代器,但只能使用一次。您的TeamID将为空,因为input1已用完。但在我的其他输入文件中,其中一些数字超过9,例如10、11、12。我使用此方法是因为它将所有数字放在第一个空格之前,并将它们保存到列表中