从文本文件每一行中的特定位置提取数据

时间:2019-05-05 20:05:18

标签: python loops text-files

我正在使用以下导入的文本文件:

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 :(得分:0)

您要在打开的文件对象上使用readlines方法,然后对行字符串进行切片:

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

答案 1 :(得分:0)

如果我正确理解了您的问题,则可以尝试以下操作:

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

您正在使用line遍历data,但是随后您要在每个循环中将数据查找到49,并一次又一次地读取相同的8个字符,以了解文件有多少行。

答案 2 :(得分:0)

如果您正在寻找该数据的第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

答案 3 :(得分:0)

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])