Простая командная строка, эквивалентная Perl в Python - PullRequest
0 голосов
/ 05 января 2011

Я сделал немного базового кодирования на Perl, но никогда не писал что-то на python. Я хотел бы сделать эквивалент отправки файла для чтения в параметре командной строки. Этот файл разделен табуляцией, поэтому разбейте каждый столбец, а затем сможете выполнить некоторую операцию с этими столбцами.

Perl-код для этого

#!/usr/bin/perl

use warnings;
use strict;

while(<>) {
    chomp;
    my @H = split /\t/;

    my $col = $H[22];

    if($H[30] eq "Good") {
       some operation in col...
    }

    else {
        do something else
    }
}

Каким будет Python-эквивалент этой задачи?

Редактировать: мне нужно, чтобы столбец H [22] был символом Юникода. Как сделать так, чтобы переменная col была такой?

Ответы [ 2 ]

3 голосов
/ 05 января 2011
#file: process_columns.py
#!/usr/bin/python

import fileinput

for line in fileinput.input():
    cols = l.split('\t')
    # do something with the columns

Вы можете использовать приведенный выше фрагмент кода

./process_columns.py < data

или просто

./process_columns.py data
2 голосов
/ 05 января 2011

Относится к: Python эквивалент Perl while (<>) {...}?

#!/usr/bin/env python
import fileinput

for line in fileinput.input():
    line = line.rstrip("\r\n")    # equiv of chomp
    H = line.split('\t')

    if H[30]=='Good':
        # some operation in col

        # first - what do you get from this?
        print repr(H[22])

        # second - what do you get from this?
        print unicode(H[22], "Latin-1")
    else:
        # do something else
        pass  # only necessary if no code in this section

Редактировать: по предположению, вы читаете строку байтов и должны правильно кодировать ее в строку Unicode; правильный способ сделать это зависит от того, в каком формате сохранен файл и каковы ваши настройки локализации. Также см. Чтение символов из файла на Python

...