如何在Python中打印文本文件中的名称

时间:2016-04-21 19:00:25

标签: python-3.x

我有一个看起来像这样的文本文件

Kei 1 2 3 4 5
Igor 5 6 7 8 9
Guillem 8 7 6 9 5

如何打印他们的姓名及其最后3个分数

我想出了这个

class_3 = open('class_3','r')
read = class_3.read()
read.split()
print(read)

但它只是出现了

K

请帮忙

2 个答案:

答案 0 :(得分:7)

您可以遍历文件对象并拆分行,然后使用简单的索引来打印预期的输出:

with open('example.txt') as f:
    for line in f:
        items = line.split()
        print items[0], ' '.join(items[-3:])

输出:

Kei 3 4 5
Igor 7 8 9
Guillem 6 9 5

使用with语句打开文件的好处是它会自动关闭块末尾的文件。

作为一种更优雅的方法,您还可以在python 3.X中使用解包分配:

with open('example.txt') as f:
    for line in f:
        name, *rest = line.split()
        print(name, ' '.join(rest))

答案 1 :(得分:1)

在python 3.x中,你必须稍微改变@ Kasramvd的答案。您必须在对print函数的调用参数周围添加括号。

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

void makearray(int data[],int n)
{
for ( int i =0 ; i < n ; i++)
    data[i]=(1+rand()%(1000-1+1));
}


template <class item, class sizetype>
int index_of_minimal(const item data[],sizetype i, sizetype n)
{
    int index=i;
    int first=data[i];

    for (i; i < n; i++)
    {
        if (data[i] < first)
            index = i;
    }

    return index;
}


template <class item, class sizetype>
void swap(item data[],sizetype i, sizetype j)
{
    int temp;

    temp=data[i];
    data[i]=data[j];
    data[j]=temp;
}


template <class item, class sizetype>
void selectionsort(item data[], sizetype n)
{
    int j;
    for(int i=0; i< n-1; i++)
    {
        j=index_of_minimal(data,i,n);
        swap(data,i,j);
    }

}

int main()
{
    int n;

    cout << "Enter n: " ;
    cin>>n;
    int data[n];
    makearray(data,n);

    cout << "unsorted array: " ;
    for(int i = 0; i < n; i++)
        cout << data[i] << " ";
    cout << endl;

    selectionsort(data, n);

    cout << "sorted array: " ;
    for(int i = 0; i < n; i++)
        cout << data[i] << " ";
    cout << endl;
    return 0;
}