您好我想在第180行提取第[3]和[4]栏的信息。我面临的问题是
它给我的错误:line = reader [180] [3] IndexError:列表索引超出范围
@@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
答案 0 :(得分:1)
如果我正确理解了您的问题,则无法拆分字段,因为它们由 3 空格分隔;你可以实际拆分正则表达式,尝试使用:
Coer = line.split("\s+")
\s
是表示空格的正则表达式类(制表符,空格,换行符和退格键?)
+
表示应用前一个模式一次或多次,因此该表达式将匹配一个或多个空格字符。使用这种方法,分隔字段的空格数无关紧要。
修改强> 如下所述,这仅适用于导入re并使用re.split。
import re
Coer = re.split("\s+",line)
答案 1 :(得分:0)
请记住,python索引从0开始,我假设当你说第180行时,你的意思是文件中的第181行和第3列和第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