#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. Хотя этот фрагмент кода может решить проблему, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причин вашего предложения по коду.