如何为每个空格分割一行,并在python中获取每个单词

时间:2014-09-21 06:33:43

标签: python-3.x

当我尝试将此文件用作routable.txt作为输入时出现此错误

C 10.0.0.0 FastEthernet0 / 0

C 12.0.0.0 Serial0 / 1/0

R 13.0.0.0 12.0.0.2 Serial0 / 1/0

R 14.0.0.0 12.0.0.2 Serial0 / 1/0

R 15.0.0.0 12.0.0.2 Serial0 / 1/0

R 20.0.0.0 12.0.0.2 Serial0 / 1/0

R 25.0.0.0 12.0.0.2 Serial0 / 1/0

data=open('routable.txt')
data.seek(0)
for each_line in data:
    print (each_line,end=' ')
    (c_r, dip, via, eth)=each_line.split("  ", maxsplit=4)


data.close()

错误是

C 10.0.0.0 FastEthernet0 / 0

追踪(最近一次通话):   文件“C:/Python34/acnrouting.py”,第5行,in     (c_r,dip,via,eth)= each_line.split(“”,maxsplit = 4) ValueError:解包需要3个以上的值

1 个答案:

答案 0 :(得分:0)

with open('routable.txt') as data:
    for line in data:
        if not line:
            continue # skip empty lines
        print(line, end="")
        parts = line.split()
        if len(parts) == 4:
            c_r, dip, via, eth = parts
        elif len(parts) == 3:
            c_r, dip, eth = parts
        else:
            print("Bad Line!")

注意:

  • with构造是处理打开文件的首选python方式,因为它确保文件句柄在不使用时将被关闭。

  • data.seek(0)是不必要的。打开文件时,文件指针始终位于文件的开头。

  • 在stackoverflow上出现的示例输入有空行(空)行。添加了if语句以确保忽略这些行。

  • 并非所有输入行都有四个元素。有些人有三个。此代码测试有多少元素并正确解压缩。