从文本文件中的一行切出两个范围
Slice two ranges from one line in text file
我正在尝试通过循环从 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
您离得不远了 - 您的问题是每次切片时都需要指定要切片的内容:
for line in self.searchfile:
if self.search in line:
line = line[3:24] + line[81:83]
self.searchresults.write(line+"\n")
...但您可能希望用 space:
分隔这两个字段
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)
我正在尝试通过循环从 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
您离得不远了 - 您的问题是每次切片时都需要指定要切片的内容:
for line in self.searchfile:
if self.search in line:
line = line[3:24] + line[81:83]
self.searchresults.write(line+"\n")
...但您可能希望用 space:
分隔这两个字段 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)