чтение данных в определенном столбце и строке текстового файла

#python #text #row #line

#python #текст #строка

Вопрос:

У меня есть текстовый файл, который содержит 3 столбца и 20000 строк. Я хотел бы знать, что я должен сделать, чтобы получить конкретные данные (например) в строке 1000 и столбце 2? Мой первый столбец отформатирован как AAAA, а мой второй столбец представляет собой число, подобное 1234. Я попробовал это решение, но я получил ошибку, основанную на том, что мой первый столбец — буквы, я хотел бы определить переменную, которая содержит мои данные в конце:

 with open ('my_file') as f:
    for x , line in eumerate(f):
         if x = 1000:
             numfloat = map(float , line.split())
             print numfloat[1]
  

Комментарии:

1. что вы подразумеваете под «строкой» в текстовом файле?

2. Означает ли это, что ваша первая строка — это алфавиты, а вторая строка — цифры? Содержит ли каждая строка 3 строки?

3. Вы имеете в виду «столбец» вместо «строки» здесь?

4. То же, что и @roganjosh, я понимаю, что есть небольшая разница в языке, но это помогло бы нам сказать столбец вместо строки. в любом случае, ваши столбцы всегда разделяются пробелами или каким-либо другим символом?

5. проверьте на наличие ошибок. да, я имею в виду столбец. и столбцы разделены пробелом

Ответ №1:

Вы пытаетесь использовать float() что-то, что содержит буквы. это происходит, когда вы вызываете:

 numfloat = map(float , line.split()) 
  

Вам нужно сообщить нам точный результат, который вы ищете, но вот одно из возможных решений

 num_float = map(float, line.split()[1])

or better yet

num_float = float(line.split()[1])
  

Это даст вам только средний столбец, я не уверен, нужна ли вам вся строка или нет.

Кроме того, как отмечено ниже, вам необходимо изменить = на == в вашем операторе if. = для присвоения, == для сравнения.

Ответ №2:

замените ‘=’ на ‘==’ в строке 3 вашего кода

 with open('my_file', 'r') as f:
    for x, line in enumerate(f):
        if x == 1000:
            print float(line.split()[1])
  

Ответ №3:

 import re

with open('my_file', 'r') as f:
    for x, line in enumerate(f):
        if x == 1000: 
            array = re.split('(d )',line) # array=['AAAA','123'] if line='AAAA123'
            print array[1] # your required second row.
  

Комментарии:

1. Хотя этот фрагмент кода может решить проблему, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причин вашего предложения по коду.