如何在python中从文本文件中提取特定内容?

2024-09-26 22:45:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是geonames邮政编码数据文件this link。上述文件中的示例数据如下:

IT  67010   Barete  Abruzzi AB  L'Aquila    AQ          42.4501 13.2806 4
IT  67012   Cagnano Amiterno    Abruzzi AB  L'Aquila    AQ          42.4574 13.2279 4
IT  67012   San Giovanni    Abruzzi AB  L'Aquila    AQ          42.4642 13.2584 4
IT  67013   Mascioni    Abruzzi AB  L'Aquila    AQ          42.5282 13.3492 4
IT  67013   Campotosto  Abruzzi AB  L'Aquila    AQ          42.5588 13.368  4
IT  67013   Poggio Cancelli Abruzzi AB  L'Aquila    AQ          42.5623 13.327  4
IT  67013   Ortolano    Abruzzi AB  L'Aquila    AQ          42.5193 13.4238 4
IT  67014   Capitignano Abruzzi AB  L'Aquila    AQ          42.5204 13.3012 4
IT  67015   Montereale  Abruzzi AB  L'Aquila    AQ          42.5233 13.2459 4
IT  67015   Marana Di Montereale    Abruzzi AB  L'Aquila    AQ          42.4967 13.2236 4
IT  67015   San Giovanni Paganica   Abruzzi AB  L'Aquila    AQ          42.5057 13.2762 4
IT  67015   Aringo  Abruzzi AB  L'Aquila    AQ          42.5554 13.2671 4
IT  67015   Ville Di Fano   Abruzzi AB  L'Aquila    AQ          42.5248 13.1864 4
IT  67015   Cesaproba   Abruzzi AB  L'Aquila    AQ          42.4985 13.1864 4
IT  67015   Marana  Abruzzi AB  L'Aquila    AQ          42.4967 13.2236 4

在上面的文件中,每行的第二部分(在IT后面的5位数字代码)是邮政编码。每行的倒数第二和最后三个字段(最后两个浮点数)是经纬度。在

我正在尝试提取这三个字段,特别是对于经纬度部分,有一些困难。以下是我目前编写的代码:

^{pr2}$

以下是纬度和经度的一些示例输出:

纬度

^{3}$

经度

13.2806
13.2279
13.2584
13.3492
    13.368
    13.327
13.4238
13.3012

正如你所能做到的,一些纬度和经度不是标准长度(大部分经纬度在小数点后有4位数,但有些只有3位数)。这导致格式不正确。如何从上面文件的每一行提取经纬度字段?在


Tags: 文件示例abit经纬度邮政编码san纬度
1条回答
网友
1楼 · 发布于 2024-09-26 22:45:27

你很亲密!在

我建议直接索引,因为您知道它们是哪一列,而不是试图通过切片来解析:

with open('data.txt', 'r') as f:
    data = f.readlines()


for line in data:
    line_sequence = line.split()

    zipcode, lat, long = line_sequence[1], line_sequence[-2], line_sequence[-3]

    print zipcode, lat, long

输出:

^{pr2}$

相关问题 更多 >

    热门问题