我想将特定列中的所有数字(以下输入文件xyz.txt中的z列)乘以因子3并将其输出到文本文件中。当我运行./script.py xyz.txt > output.txt
时,我收到此错误:
Traceback(最近一次调用最后一次):文件“./script.py”,第23行,in sys.exit(main(sys.argv))文件“./script.py”,第18行,在main中 result.append(z.split('')[2] * 3)IndexError:列表索引超出范围
你知道我怎么能解决这个错误吗?
script.py:
#!/usr/bin/env python3
def main(argv):
inputfile = open(argv[1])
line = inputfile.readline()
while line:
print(line, end="")
if line.startswith('[ xyz ]'):
break
line = inputfile.readline()
result=[]
for z in line:
result.append(z.split(' ')[2]*3)
print(z.rstrip(), '; modified')
if __name__ == "__main__":
import sys
sys.exit(main(sys.argv))
输入文件xyz.txt:
[ xyz ]
; x y z
1.5 3.5 6.3
2.4 4.2 2.4
3.2 8.9 8.9
4.3 2.1 9.2
5.4 6.3 3.5
请求的输出文件output.txt:
[ xyz ]
; x y z
1.5 3.5 18.9 ; modified
2.4 4.2 7.2 ; modified
3.2 8.9 26.7 ; modified
4.3 2.1 27.6 ; modified
5.4 6.3 10.5 ; modified
答案 0 :(得分:0)
import sys
def main(argv):
inputfile = open(argv[1])
line = inputfile.readline()
result = []
while line:
# print(line, end="")
# print(line)
# print(len(line))
# print(line.strip())
# print(len(line.strip()))
# print(line.strip().endswith("z"))
# print("*" + line + "*")
if line.strip().endswith("z"):
result.append(line)
line = inputfile.readline()
continue
# print()
# print(line)
# print("Z line")
# print(line)
# print(type(line))
prev = line[:-5]
z = line[-4:-1]
# print(z)
try:
z = float(z)
except ValueError:
pass
# print(type(z))
# print()
z = z * 3
# print(z)
z = str(z) + " ; modified"
# print(z)
output_line = prev + z
# print(output_line)
result.append(output_line)
line = inputfile.readline()
print(result)
if __name__ == "__main__":
sys.exit(main(sys.argv))