Python или утилита командной строки - сортировать и фильтровать файл? - PullRequest
1 голос
/ 27 августа 2011

Данные даны в форме:

a b 1.1
c d 2.3
b a 1.1

Можно ли отсортировать такой файл на основе столбца thired и удалить строки, в которых дублируется запись в третьем столбце, так что выходные данные будут:

a b 1.1
c d 2.3

или,

c d 2.3
b a 1.1

.

Я могу использовать только утилиты Python, R или командной строки для выполнения этой задачи на множествебольшие файлы.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 27 августа 2011

Unix sort должен быть в состоянии выполнить работу за вас:

cat file | sort -u -k3,3n
a b 1.1
c d 2.3
cat file | sort -u -k3,3rn
c d 2.3
a b 1.1
2 голосов
/ 27 августа 2011
f = open('text.txt','rb')
filter = []
rows = []
for line in f:
    line = line.replace('\r\n','')
    data = line.split(' ')
    if len(data) >= 3:
        if not data[2] in filter:
            filter.append(data[2])
            rows.append(data)
f.close()

f = open('output.txt','wb')
for row in rows:
    f.write(row[0] + ' ' + row[1] + ' ' + row[2] + '\r\n')
f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...