2013-04-15 123 views
-1

我的文本文件是这样的:如何在python中使用特定的文本文件行?

467 119 635 231 234 858 
786 463 715 745 729 574 856 806 339 106 487 
798 791 392 916 177 115 948 871 525 

正如你所看到的,有三个独立的线用不同的数值。我的任务是对它们进行排序,但仅限于它们所在的行。所以基本上,我需要排序第一行从最小到最大,然后是第二行从最小到最大,第三行也是一样。

该程序指定它需要使用此.txt文件中的值。所以我想要做的是逐个查看每一行,并处理该行,用代码对其进行排序,然后将其重新排列。

我的问题是这样的:我如何让python一次只看一条线?

我知道,这个代码读取的第一行:

f = open("numbers.txt", "r") 
f.readline() 

但我正在寻找的东西,特别是刚刚返回的每一行,那这样我可以用我的与该特定行排序的代码工作。

说明:我不是在寻找排序帮助,我只是想弄清楚如何一次看看每一行。

回答

1
for line in f: 
    nums = map(int, line.split()) 
    # looks at one line at a time, you can sort it now 

如果你想一次全部

nums = [map(int, line.split()) for line in f] 

装载现在,您可以像nums[0]nums[1]每个单独的行访问。

+0

是的,我已经试过了,但说我需要某些行设置为一个变量,这样我就可以开始搞乱它的内容。所有的for循环都做了3个循环的文本,直到所有3行都发布! – YourbrainonCompSci

+0

@我添加了一个代码,将它转换成整数列表 – jamylak

+0

好吧,但是说你打印nums [0]。这将打印每行中的第一个数字。我试图让nums [0](或任何其他变量)刚刚出现第一行,然后nums [1](或别的东西)将调出第二行。也许我只是没有看到自己调用这些线的正确方法? – YourbrainonCompSci

0

这是一个可以做你想做的功能。只要给它的文件路径,它会完成剩下的工作。

注:它是一个发电机。

def read_sort(file_path): 
    with open(file_path) as f: 
     for line in f: 
      yield sorted(map(int, line.split())) 


print list(read_sort(__path_to_file__) 
+0

你忘了把它转换成int,所以''10''小于''2''例如 – jamylak

+0

我真的只是想弄清楚我遇到的这个特定问题,赋值(排序)比我所说的要复杂得多,它涉及基数排序和什么。 – YourbrainonCompSci

相关问题