1

嗨,我正在尝试在第 180 行提取列 [3] 和 [4] 的信息。我面临的问题是

  1. 元素由 3 个空格分隔
  2. @@Data 从第 180 行开始
  3. 我使用的代码无法提取出特定的列
  4. 它给我的错误:line = reader[180][3] IndexError: list index out of range

    @@Data: Source 0 in text format:        
    1    2    2    1    1    9    1    1    -2    2    1    -3    3    1 
    3    2    2    1    1    9    1    1    -2    2    1    -3    3    1 
    4    2    2    1    1    9    1    1    -1    1    1    -2    2    1 
    

我正在使用的代码

     reader = list(csv.reader(f, delimiter=' '))
     SatIP, CoerIP = getSatHcoer(reader)
     print SatIP, CoerIP

     def getSatHcoer(reader): 
     line = reader[180][3]
     Sat = line.split('    ')
     Sat =  Sat[len(Sat)-1]
     line = reader[180][4]
     Coer = line.split('     ')
     Coer =  Coer[len(Coer)-1] 
     return Sat, Coer
     pass
4

2 回答 2

1

如果我正确理解了您的问题,那么您在拆分字段时遇到了麻烦,因为它们被3 个空格分隔;您实际上可以拆分正则表达式,尝试使用:

 Coer = line.split("\s+")

\s是表示空格(制表符、空格、换行符和退格符?)的正则表达式类,表示 +应用前一个模式一次或多次,因此该表达式将匹配一个或多个空格字符。使用这种方法,分隔字段的空格数无关紧要。

编辑 如下所述,这仅在您导入 re 并使用 re.split 时才有效。

 import re
 Coer = re.split("\s+",line)
于 2013-10-09T02:28:53.743 回答
0

请记住,python 索引从 0 开始,我假设当您说第 180 行时,您的意思是文件中的第 181 行,第 3 和第 4 列是文件中的第 4 和第 5 列。如果不是,则从这些数字中选择-1。

def getSatHcoer(reader):
    Sat = reader[180][3]
    Coer = reader[180][4]
    return Sat, Coer

with open('file.txt', 'r') as f:
    reader = [[x.strip().split('   ')] for x in f]
SatIP, CoerIP = getSatHcoer(reader)
print SatIP, CoerIP
于 2013-10-09T02:34:11.583 回答