从文本文件中的一行切两个范围

时间:2015-03-20 18:12:15

标签: python file python-3.x strip substring

我试图通过循环遍历在python 3中为每行打开的文本文件提取两个范围。

应用程序有一个Entry小部件,值存储在self.search中。然后我遍历一个包含我想要的值的文本文件,并将结果写出self.searchresults,然后显示在文本框中。

我已尝试过以下第三行的变体,但没有到达任何地方。

我想在3:24和81:83 ...

的每一行写出字符
for line in self.searchfile:
    if self.search in line:
        line = line[3:24]+[81:83]
        self.searchresults.write(line+"\n")

这是我正在使用的文本文件的缩略版(原here):

! Author: Greg Thompson  NCAR/RAP
!         please mail corrections to gthompsn (at) ucar (dot) edu
! Date: 24 Feb 2015
! This file is continuously maintained at:
! http://www.rap.ucar.edu/weather/surface/stations.txt
!
! [... more comments ...]

ALASKA             19-SEP-14                                                  
CD  STATION         ICAO  IATA  SYNOP   LAT     LONG   ELEV   M  N  V  U  A  C
AK ADAK NAS         PADK  ADK   70454  51 53N  176 39W    4   X     T          7 US
AK AKHIOK           PAKH  AKK          56 56N  154 11W   14   X                8 US
AK AKUTAN           PAUT               54 09N  165 36W   25   X                7 US
AK AMBLER           PAFM  AFM          67 06N  157 51W   88   X                7 US
AK ANAKTUVUK PASS   PAKP  AKP          68 08N  151 44W  642   X                7 US
AK ANCHORAGE INTL   PANC  ANC   70273  61 10N  150 01W   38   X     T  X  A    5 US

1 个答案:

答案 0 :(得分:1)

你离我不远 - 你的问题是你需要指定每次切片时切片的内容:

for line in self.searchfile:
    if self.search in line:
        line = line[3:24] + line[81:83]
        self.searchresults.write(line+"\n")

...但您可能希望用空格分隔两个字段:

        line = line[3:24] + " " + line[81:83]

但是,如果您发现自己不止一次使用+来构建字符串,那么您应该考虑使用Python built-in string-formatting abilities代替(而在您使用它的时候,你可以在同一个操作中添加该换行符):

for line in self.searchfile:
    if self.search in line:
        formatted = "%s %s\n" % (line[3:24], line[81:83])
        self.searchresults.write(formatted)