Извлечение данных из определенной позиции в каждой строке текстового файла - PullRequest
0 голосов
/ 05 мая 2019

Я работаю со следующим текстовым файлом, который я импортировал следующим образом:

url = 'https://www2.census.gov/programs-surveys/saipe/datasets/2016/2016-state-and-county/est16all.txt'
url_get.urlretrieve(url, 'poverty.txt')

Я хочу извлечь части текстового файла для каждой строки, начиная с позиции 49, максимальное количество символов равно 8. Поэтому я пробую следующее:

with open('poverty.txt', 'r') as data:
    for line in data:
        data.seek(49)
        print(data.readline(8))

Вывод, однако, просто повторяет значения из первой строки файла txt для количества строк в файле. Это явно неверно.

14115713
14115713
14115713
14115713
14115713
14115713
14115713
14115713

Как мне построить цикл таким образом, чтобы извлечь значения из каждой строки в 50-й позиции?

Ответы [ 4 ]

0 голосов
/ 05 мая 2019

Метод readlines() разделяет данные в кортеж, каждая строка которого является элементом в кортеже.

with open('some_file.txt','r') as file:
    lines = file.readlines()
    for line in lines:
        f,l = 1, 64 # the slice you want to take
        print(line[f:l])
0 голосов
/ 05 мая 2019

Если я правильно понял вашу проблему , вы можете попробовать что-то вроде этого:

In [01]: with open('something.txt', 'r') as data:
    ...:     for line in data:
    ...:         print(line[48:57])

Вы используете line, чтобы перебрать data, но затем вы ищетеданные до 49 в каждом цикле и снова и снова считывать одни и те же 8 символов для определения количества строк в файле.

0 голосов
/ 05 мая 2019

Если вы ищете 9-й элемент этих данных, то вы можете использовать

 with open('est16all.txt') as fd:
   for line in fd:
     print (line.split()[8])

или, скажем, если вы хотите использовать фрагменты от 49 до 49 + 8, тогда

 with open('est16all.txt') as fd:
   for line in fd:
     print (line[49:49+8].lstrip())

Пример выборки:

[root@bazooka2 ha_vxt]# python find_missing.py | more
14115713
267674
2588
7881
2146
1263
2568
995
0 голосов
/ 05 мая 2019

Вы хотите использовать метод readlines для объекта открытого файла, а затем нарезать строку:

with open('poverty.txt', 'r') as data:
    for line in data.readlines():
        print(line[49:57])
...