2015-06-17 2 views
0

Я абсолютный новичок в Python, и я хотел бы получить поле т.е. от 2-го столбца, 3-й строки из текстового файла, как это:Python - Выберите конкретное значение из тестового файла

176a AUGCACGUACGUA ACGUA AGUCU 
156b GACUACAUGCAUG GCAUA AGCUA 
172e AGCUCAGCUAGGC CGAGA CGACU 

(текст разделенные пробелами). есть ли простой способ сделать это?

+0

возможно дубликат [библиотеки Python для синтаксический анализ разметки пространства] (http://stackoverflow.com/questions/13773332/python-library-for-parsing-space-delimited-files) и многие другие, google fu: * python parse space с разделителем текстового файла * –

ответ

0

Вы можете разделить текст и иметь список списков, где каждый sub list - это строка, затем вырвать все, что вам нужно, из списка, используя rows[row - 1][column - 1].

f = open('test.txt', 'r') 
lines = f.readlines() 
f.close() 
rows = [] 
for line in lines: 
    rows.append(line.split(' ')) 
print rows[2][1] 
0

, если файл не слишком большой, я бы прочитал его один раз, затем разделить каждую строку и получить ту часть, которую я хочу:

with open(myfile) as file_in : 
    lines = file_in.readlines() 

third_line = lines[2] 
second_column = third_line.split(' ')[1] 
print second_column 
0

Если у меня есть файл test, который содержит ваш пример данных Ниже будет делать работу:

def extract_field(data, row, col): 
    '''extract_field -> string 

    `data` must be an iterable file object or an equivalent 
    data structure which elements contains space delimited 
    fields. 
    `row` and `col` declares the wished field position which 
    will be returned. ''' 
    # cause first list element is 0 
    col -= 1 
    # jump to requested `row` 
    for _ in xrange(row): 
     line = next(data) 
    # create list with space delimited elements of `line` 
    # and return the `col`'s element of these list 
    return line.split()[col] 

Используйте это так:

>>> with open('test') as f: 
...  extract_field(f, row=3, col=2) 
... 
'AGCUCAGCUAGGC' 
Смежные вопросы